2013-03-10 239 views
0

我一直在尝试提出一段时间的解决方案,但尚未找到可靠工作的解决方案。用PHP正则表达式来替换由字母或空白包围的值

我在每个换行符被表示为一个零字符串(0)

$string ="The quick brown fox0jumped over the lazy dog 0with 1308mm to spare."; 

我正在寻找一种方式来代替每个0,其不与HTML标签的号码的一部分“BR”。

到目前为止,我得到的最接近是:

preg_replace('/([a-zA-Z ])0([a-zA-Z ])/', '$1\<br\>$2', $string); 

回答

5

这样的事情,你应该使用断言:

/(?<!\d)0(?!\d)/ 

此外,第二个参数只是一个字符串。绝对不需要跳过尖括号 - 事实上,您也不需要在正则表达式中将它们转义出来。所以只需使用<br>作为第二个参数。

+0

+1简单而正确:) – 2013-03-10 16:42:01

+0

谢谢,这样做!需要更多地研究Lookahead和Lookbehind断言。 – Jenszor 2013-03-10 16:42:51