2013-06-03 23 views
3

之间更换子更新问题:PHP正则表达式:两个特殊字符

$li_text = $li->plaintext; 
echo '<br>'.$li_text; 
echo '<br>'.$li_text = preg_replace('/\:(.*?)\>/',':', $li_text); 

$li所获得的价值 “资格:学校&毕业> BE/B.Tech(工程)” //by using simple html DOM parsing from other websites

输出我越来越是

Qualification : School & Graduation > BE/B.Tech (Engineering) 
Qualification : School & Graduation > BE/B.Tech (Engineering) 

如果我指派$li_text = "Qualification : School & Graduation > BE/B.Tech (Engineering)"那么REGEX工作正常。

+1

确定吗? [这似乎是在regex101上工作](http://www.regex101.com/r/oB1iW9)。 – Jerry

+2

我刚测试过它们,它们工作正常。你是否将'preg_replace'的返回值分配回'$ str'? (不得不问,有时是简单的事情) – keithhatfield

+0

@dleiftah我认为这就是发生了什么。 – Jerry

回答

2

你的代码是工作的罚款。请注意0​​不会更改主题(即$str),但会返回结果。

的preg_replace()如果受试者参数是一个数组, 或字符串否则返回一个数组。

如果找到匹配,新主题将被退回,否则 主题,如果出现错误将原样返回或NULL

所以:

preg_replace('/:(.*?)\>/',':', $str); 

echo $str; 

错误。但是:

$str = preg_replace('/:(.*?)\>/',':', $str); 

echo $str; 

工作

1

试试这个:

preg_replace('/(?<=:)(.*?)>/', '', $str);