PHP preg_replace:我如何匹配但不能替换它?

时间:2011-11-21 04:36:11

标签: php regex

例如,如果我想preg_replace HTML元素的标题:

$str = preg_replace('/title=\"([^\"]+)\"/', 'foo', $str);

请不要给我这个具体例子的其他解决方案(非正则表达式),这只是一个例子。我需要一个适用于任何正则表达式的解决方案。

1 个答案:

答案 0 :(得分:7)

如果您想将部件与preg_replace匹配,但只是部分替换其他部件,则有两种选择。
您只需重新插入匹配的部分(包含在捕获组中,然后使用$1$3):

 $str = preg_replace('/(title=")([^"]+)(")/', '$1foo$3', $str);

或者您使用assertions

 $str = preg_replace('/(?<=title=")([^"]+)(?=")/', 'foo', $str);