将标签转换为网址

时间:2018-07-30 15:22:11

标签: php regex

我在将#标签转换为url链接时遇到问题,我有此代码

$string = "hi i don't #care about this #هاش";
$text = preg_replace('/(\#)([^\s]+)/', ' <a href="'.SITE_URL.'/tag/$2">#$2</a> ', $string);
echo $text;

它在阿拉伯语和英语中都可以正常工作,但是当我的字符串上有逗号时,会给我这样的声音

enter image description here

我也尝试过此代码

$text = preg_replace('/(?<!\S)#([0-9a-zA-Z]+)/', '<a href="/hashtag/$1">#$1</a>', $string);

并且仅在英文哈希上可以正常工作

enter image description here

那我该怎么解决

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案是允许&位于主题标签的前面。这样做不允许检测到&#39;之类的东西。

(?<!&)(\#)([^\s]+)

请注意,前缀(?<!&)后面是一个负数。