preg_replace在以单词部分开头的单词周围添加链接

时间:2013-08-15 23:09:46

标签: php preg-replace

我在php中有这个preg_replace几乎正确地将每个以'exploit'开头的单词替换为链接:

preg_replace('#[\b]?(exploit([^ ]*))[\b]?#', '<a>$1</a>', 'My exploits are exploitable.');

我明白了:

My <a>exploits</a> are <a>exploitable.</a>

哪一半是错误的,不应该在第二个单词上链接。我知道我需要将上面的部分[^]替换为像[^ \ b]这样的东西,但它不起作用。

我知道我可以随时做,[^。]但它只能用于以空格和句号结尾的单词,而不是逗号。

3 个答案:

答案 0 :(得分:0)

\b(exploit[a-zA-Z]*)应该可以解决问题。

旁白:这个网站非常方便您尝试使用preg_replace:http://www.fullonrobotchubby.co.uk/random/preg_tester/preg_tester.php

答案 1 :(得分:0)

\bexploit(\w*)\b - 更简单......

玩得开心

regexrDemo

修改

如果您只想要字母,请注释:

/\bexploit([a-z]*)\b/i

regexrDemo only letters

答案 2 :(得分:0)

如果你想处理unicode,你可以这样做:

preg_replace('#\b(exploit\pL*)#u', '<a>$1</a>', 'My exploits are exploitable.');

\pL代表任何字母。