PHP以逗号分隔的字符串从逗号获取值,而不会爆炸和循环

jme*_*zes 4 php arrays string

有没有办法在逗号分割逗号分隔的字符串,而不首先爆炸它并循环数组?我有一个从数据库输出的字符串,它以我在下面显示的方式出现.然后我将它们分成链接.

但是,考虑到字符串的方式,我是否可以按照下面的方式将其添加到链接中?

<?php

$tags = "fiction,non-fiction,horror,romance"; 

$tags = explode(',', $tags);

foreach( $tags as $tag ){
    echo '<a href="'.$tag.'">'.$tag.'</a><br />';
}

?>
Run Code Online (Sandbox Code Playgroud)

上面的最后一点是:

<a href="fiction">fiction</a><br />
<a href="non-fiction">non-fiction</a><br />
<a href="horror">horror</a><br />
<a href="romance">romance</a><br />
Run Code Online (Sandbox Code Playgroud)

Jon*_*nan 6

你可以使用一个正则表达式:

preg_replace('~\s?([^\s,]+)\s?(?:,|$)~', '<a href="$1">$1</a><br />' . PHP_EOL, $tags);
Run Code Online (Sandbox Code Playgroud)
  • \s? 匹配单个空格或什么都没有
  • ([^\s,]+) 匹配所有内容,直到它到达空格或逗号并捕获它
  • \s? 再次,匹配单个空格或什么都没有
  • (?:,|$) 匹配逗号或字符串结尾