Php Preg_replace不替换所有匹配项

Php Preg_replace不替换所有匹配项,php,regex,preg-replace,Php,Regex,Preg Replace,我试图用正则表达式替换文件中的每个链接,但当我尝试时,它只替换第一个匹配项,并继续前进,而不替换其他链接。这是我的代码: $allData = preg_replace( '|(.+?src=")(.+?)(".*)|is', "\\1" . $urlRoot . "/\\2\\3", $allData ); 它必须从3中获取第二个匹配项,并将其放在$urlRoot之后,然后对文件中的每个匹配项执行此操作。它正在工作,但仅适用于第一组。只需从第三组中删除*: $allData = preg_r

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

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

它必须从3中获取第二个匹配项,并将其放在
$urlRoot
之后,然后对文件中的每个匹配项执行此操作。它正在工作,但仅适用于第一组。

只需从第三组中删除
*

$allData = preg_replace( '|(.+?src=")(.+?)(")|is', "\\1" . $urlRoot . "/\\2\\3", $allData );
你也可以这样做:

$allData = preg_replace( '|\bsrc="([^"]+)|is', 'src="' . $urlRoot . "/$1", $allData );
是的,第二个有效:)谢谢。顺便说一句,当我启动程序时,你给我的第一个答案是崩溃了,但第二个答案非常有效。