我在将#标签转换为url链接时遇到问题,我有此代码
$string = "hi i don't #care about this #هاش";
$text = preg_replace('/(\#)([^\s]+)/', ' <a href="'.SITE_URL.'/tag/$2">#$2</a> ', $string);
echo $text;
它在阿拉伯语和英语中都可以正常工作,但是当我的字符串上有逗号时,会给我这样的声音
我也尝试过此代码
$text = preg_replace('/(?<!\S)#([0-9a-zA-Z]+)/', '<a href="/hashtag/$1">#$1</a>', $string);
并且仅在英文哈希上可以正常工作
那我该怎么解决
答案 0 :(得分:0)
一个简单的解决方案是允许&
位于主题标签的前面。这样做不允许检测到'
之类的东西。
(?<!&)(\#)([^\s]+)
请注意,前缀(?<!&)
后面是一个负数。