php preg_replace pattern - 用逗号替换文本

时间:2015-05-21 18:36:26

标签: php preg-replace

我在数组中有一串单词,我使用preg_replace将每个单词变成一个链接。目前我的代码有效,每个单词都转换为链接。

这是我的代码:

$keywords = "shoes,hats,blue curtains,red curtains,tables,kitchen tables";

$template = '<a href="http://domain.com/%1$s">%1$s</a>';

$newkeys = preg_replace("/(?!(?:[^<]+>|[^>]+<\/a>))\b([a-z]+)\b/is",    sprintf($template, "\\1"), $keywords);

现在,唯一的问题是,当我想要2或3个单词作为单个链接时。例如,我有一个关键字&#34;蓝色窗帘&#34;。该脚本将为单词&#34; blue&#34;创建一个链接。和&#34;窗帘&#34;分别。我的关键字用逗号分隔,我希望preg_replace只替换逗号之间的文字。

我尝试过使用该模式,但我无法弄清楚模式会是什么。

只是为了澄清,目前输出如下:

  <a href="http://domain.com/shoes">shoes</a>,<a     href="http://domain.com/hats">hats</a>,<a href="http://domain.com/blue">blue</a>     <a href="http://domain.com/curtains">curtains</a>,<a     href="http://domain.com/red">red</a> <a href="http://domain.com/curtains">curtains</a>,<a href="http://domain.com/tables">tables</a>,<a href="http://domain.com/kitchen">kitchen</a> <a    href="http://domain.com/tables">tables</a>

虽然我想实现以下输出:

<a href="http://domain.com/shoes">shoes</a>,<a      href="http://domain.com/hats">hats</a>,<a href="http://domain.com/blue      curtains">blue curtains</a>,<a href="http://domain.com/red curtains">red    curtains</a>,<a href="http://domain.com/tables">tables</a>,<a      href="http://domain.com/kitchen tables">kitchen tables</a>

1 个答案:

答案 0 :(得分:0)

preg_replace代码略有变化,您的工作将完成: -

$keywords = "shoes,hats,blue curtains,red curtains,tables,kitchen tables";

$template = '<a href="http://domain.com/%1$s">%1$s</a>';

$newkeys = preg_replace("/(?!(?:[^<]+>|[^>]+<\/a>))\b([a-z ' ']+)\b/is",    sprintf($template, "\\1"), $keywords);

OR

$newkeys = preg_replace("/(?!(?:[^<]+>|[^>]+<\/a>))\b([a-z' ']+)\b/is",    sprintf($template, "\\1"), $keywords);

echo $newkeys;

输出: - http://prntscr.com/77tkyb

注意: - 我刚在preg_replace添加了空格。而且你可以轻松地到达目的地。我希望我很清楚。

preg_replace中缺少匹配的空格和单词,我只添加了。