我有这个字符串:
$text = "What's your #name ?"
我有这个代码捕获'name'和'039':
preg_replace("/\B#(\w+)/", "<a href='url'>#$1</a>", $text);
关于如何捕捉'名字'而不是'039'的任何想法?
答案 0 :(得分:1)
使用否定的lookbehind:
echo preg_replace("/(?<!\S)#(\w+)/", "<a href='url'>#$1</a>", $text);
正则表达式尸检:
(?<!\S)
- 负面观察 - 断言#
前面没有非空格字符#
- 字面匹配#
字符(\w+)
- 首次捕获群组答案 1 :(得分:0)
您可以使用[A-Za-z]+
代替\w+
。