我尝试了什么:
#\w+
匹配以#
并将其替换为:
<a href="/$&" />$&</a>
我想摆脱标签的href区域中的#并将其保留为链接文本,即在开始和结束标记之间。请查看以下示例。
我想要什么
如果句子是:
Lorem ipsum #set amet #dolor
然后,我希望输出为:
Lorem ipsum <a href="/set">#set</a> amet <a href="/dolor">#dolor</a>
我使用preg_replace()而没有任何分隔符。
我已经拥有的东西:
preg_replace('/(?<=#)\w+/', '<a href="/\\0" />\\0</a>', $comment)
Lorem ipsum #<a href="/set">set</a> amet #<a href="/dolor">dolor</a>
而不是
Lorem ipsum <a href="/set">#set</a> amet <a href="/dolor">#dolor</a>
注意#
的位置答案 0 :(得分:2)
使用捕获组。
替换:
#(\w+)
与
<a href="/$1" />$&</a>
$1
将替换为捕获的第1组(单词部分)
在PHP中:
$replaced = preg_replace('/#(\w+)/', '<a href="/\1" />\0</a>',
$sentence);
答案 1 :(得分:0)
$replaced=preg_replace("/\#([\w\d]+)/ui",'<a href="/\1">\0</a>',$text);
我建议你用这个。在falsetru的答案中,他正在使用\ w。这意味着它只能匹配英语中的字母数字字符。如果你使用\ w \ d,它将匹配以#。开头的所有utf-8字符。