这个问题已经有了答案:
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?匹配逗号或字符串结尾

08-19 13:26