2011-08-04 8 views
0

我不知道如何做到以下几点:PHP的preg_replace:不能得到更换部分工作,发现是细

找到'/\s[2-9]\)/'所有实例,并用<br />标签替换空间。
东西这么简单不起作用:

$preg_num = ' /\s[2-9]\)/'; 
$preg_fix = "'/<br>/[2-9]\)'"; 
preg_replace($preg_num,$preg_fix,$notes); 

什么我需要到$ preg_fix变量更改为?

+1

它为什么不起作用?你有错误信息吗?它说什么?你在检查错误状态还是错误返回值?看不到,请处理错误返回值,并请阅读手册实际使用的功能的工作原理。 – hakre

+0

你能提供你的源文本(或部分)以及它应该被替换的内容吗? – scube

回答

3

使用先行比反向引用,IMHO简单。

$preg_num = '/\s(?=[2-9]\))/'; 
$preg_fix = '<br/>'; 
preg_replace($preg_num,$preg_fix,$notes); 

这样,你只与<br/>替换空间。

+0

+1,对于这个用例来说,前瞻更有意义。 –

+0

这对我很好。谢谢,我感谢帮助。 – mikepreble

2

替换字符串不被视为正则表达式 - 它更像是一个文字字符串。如果您试图将在原始正则表达式中匹配的数字[2-9]放入替换字符串中,请将该字符作为一个组捕获并使用反向引用。

$preg_num = '/\s([2-9])\)/'; 
$preg_fix = "<br />$1)'"; 
preg_replace($preg_num,$preg_fix,$notes); 

更多信息: