Preg_replace不替换所有匹配项

时间:2014-06-04 13:43:55

标签: php regex preg-replace

我正在尝试用正则表达式替换文件中的每个链接,但是当我尝试它时,它只替换第一个匹配并继续向前而不替换其他匹配。这是我的代码:

$allData = preg_replace( '|(.+?src=")(.+?)(".*)|is', "\\1" . $urlRoot . "/\\2\\3", $allData );

必须从 3 进行第二次匹配并将其放在$urlRoot之后,并为文件中的每个匹配执行此操作。它正在运作但仅适用于第一个。

1 个答案:

答案 0 :(得分:2)

只需从第3组中移除.*

$allData = preg_replace( '|(.+?src=")(.+?)(")|is', "\\1" . $urlRoot . "/\\2\\3", $allData );

你也可以这样做:

$allData = preg_replace( '|\bsrc="([^"]+)|is', 'src="' . $urlRoot . "/$1", $allData );