0

我在将主题标签转换为 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);

它只适用于英文哈希

在此处输入图像描述

那么我该如何解决这个问题

4

1 回答 1

0

一个简单的解决方案是在主题标签前允许&。这样做将不允许检测到类似&#39;.

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

请注意前缀(?<!&),这是一个否定的后视。

于 2018-07-30T15:29:59.360 回答