将逗号分隔的单词转换为逗号分隔的超链接


Convert comma-separated words to comma-separated hyperlinks

我有一个爆炸问题,我的代码:

$the_genre = 'Drame, Action, Comédie';
$genre_explode = explode(',', $the_genre);
$sep = '';
foreach($genre_explode as $genre)
{
    $genre = str_replace(' ', '', $genre);
    $genre .= $sep.'<a href="/genre/'.$genre.'/">'.$genre.'</a>';
    $sep = ', ';
}
echo $genre;

我有这个:

Comédie, <a href="/genre/Comédie/">Comédie</a>

我想要这个:

<a href="/genre/Drame/">Drame</a>, <a href="/genre/Action/">Action</a>, <a href="/genre/Comédie/">Comédie</a>

您在错误的地方回显。将echo语句移动到循环中:

foreach($genre_explode as $genre)
{
    $genre = str_replace(' ', '', $genre);
    $genre .= $sep.'<a href="/genre/'.$genre.'/">'.$genre.'</a>';
    $sep = ', ';
    echo $genre;
}

这将返回:

Drame<a href="/genre/Drame/">Drame</a>Action, <a href="/genre/Action/">Action</a>Comédie, <a href="/genre/Comédie/">Comédie</a>

如果在循环外进行回声,则只会得到$genre最后值。以下是的工作示例

编辑-附加信息

代替str_replace(),您也可以使用trim():

$genre = trim($genre);

您正在连接循环中分配的变量,因此结果只输出数组的最后一个元素。你可以使用这个代码来实现你想要的:

$the_genre = 'Drame, Action, Comédie';
$genre_explode = explode(',', $the_genre);
$out = '';
foreach($genre_explode as $genre)
{
   $genre = trim($genre);
   $out .= '<a href="/genre/'.$genre.'/">'.$genre.'</a>, ';
}
echo $out;

只需避免所有爆炸、循环和串联。使用preg_replace()将每个单词转换为所需的超链接标记。

代码:(演示)

$the_genre = 'Drame, Action, Comédie';
echo preg_replace(
         '/'pL+/u',
         '<a href="/genre/$0/">$0</a>',
         $the_genre
     );

输出:

<a href="/genre/Drame/">Drame</a>, <a href="/genre/Action/">Action</a>, <a href="/genre/Comédie/">Comédie</a>