PHP Regex帮助标签

时间:2009-08-25 17:32:26

标签: php regex

我有以下字符串:

$str = '#hello how are #you and #you and #you';

我想将一些html包装在那些在它们前面有哈希标记的地方,例如:

echo preg_replace("/#([A-Za-z0-9_]+)(?= )/", "<a href='http://url.com/$1'>$0</a>", $str);

将输出:

#hello #you#you以及#you

是怎样的

请注意,每个URL链接都没有链接中的哈希标记。

但是,这是我的问题,因为在最后一个末尾没有空格#you它与正则表达式不匹配,显然没有包括在内。我不确定该怎么做,因为有些可能有空格,有些可能没有,但我不想在输出中包含空格(因此(?=))但我不知道还有什么我能做到。

非常感谢任何帮助。

提前致谢

2 个答案:

答案 0 :(得分:3)

使用(\ s | \ Z)这将匹配空格或行尾

答案 1 :(得分:1)

您可以将选择器切换到排除模式,例如([^,。] +)。因此应适用于所有实例。