PHP将纯文本转换为主题标签链接

前端之家收集整理的这篇文章主要介绍了PHP将纯文本转换为主题标签链接前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用 PHP用户的帖子(文本)转换为hashtag可点击链接.

根据我的发现,主题标签应该只包含字母数字字符.

$text = 'Testing#one #two #three.test';
$text = preg_replace('/#([0-9a-zA-Z]+)/i','<a href="/hashtag/$1">#$1</a>',$text);

它将链接放在所有(#one #two #three)上,但我认为#one不应该转换,因为它与另一个字母数字字符相邻,如何调整reg-ex来修复它?

第三个也没关系,它只匹配#three,我认为是正确的.

对于非空白字符,您可以将正则表达式修改为负向后观,如下所示:
(?<!\S)#([0-9a-zA-Z]+)

工作正则表达式示例:

http://regex101.com/r/mR4jZ7

PHP

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

编辑:
并使表达式与其他语言(非英语字符)兼容:

(?<!\S)#([0-9\p{L}]+)

工作范例:

https://regex101.com/r/Pquem3/1

猜你在找的PHP相关文章