我有以下字符串:
$str = '#hello how are #you and #you and #you';
我想在那些前面有哈希标签的html中包裹一些html,例如:
echo preg_replace("/#([A-Za-z0-9_]+)(?= )/", "<a href='http://example.com/$1'>$0</a>", $str);
将输出:
怎么样注意每个URL链接都没有在链接中获得hash标签。
但是,这是我的问题,因为最后一个 #you 末尾没有空格,它与正则表达式不匹配,显然没有被包含在内。我不确定到底要做什么,因为有些后面可能有空格,有些可能没有,但我不想在输出中包含空格(因此 (?= ) ),但我不知道什么否则我可以做。
使用 (\s|\Z) 这将匹配空格或行尾
您可以将选择器切换到排除模式,例如([^,.]+)。因此应该适用于所有实例。