这个问题已经有了答案:
PHP explode in array
3答
有没有一种方法可以在逗号处拆分逗号分隔的字符串,而不必首先将其分解并在数组中循环?我有一个从数据库输出的字符串,如下所示。然后我把它们分成几个链接。
但是,考虑到字符串的方式,我能不按下面的方式把它放到链接中吗?
<?php
$tags = "fiction,non-fiction,horror,romance";
$tags = explode(',', $tags);
foreach( $tags as $tag ){
echo '<a href="'.$tag.'">'.$tag.'</a><br />';
}
?>
以上最后一项是:
<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 />
最佳答案
您可以使用单个regex:
preg_replace('~\s?([^\s,]+)\s?(?:,|$)~', '<a href="$1">$1</a><br />' . PHP_EOL, $tags);
\s?
只匹配一个空白或不匹配([^\s,]+)
匹配所有内容,直到它达到空白或逗号并捕获它再次,匹配一个空白或不匹配
\s?
匹配逗号或字符串结尾