我正在尝试用正则表达式替换文件中的每个链接,但是当我尝试它时,它只替换第一个匹配并继续向前而不替换其他匹配。这是我的代码:
$allData = preg_replace( '|(.+?src=")(.+?)(".*)|is', "\\1" . $urlRoot . "/\\2\\3", $allData );
必须从 3 进行第二次匹配并将其放在$urlRoot
之后,并为文件中的每个匹配执行此操作。它正在运作但仅适用于第一个。
答案 0 :(得分:2)
只需从第3组中移除.*
:
$allData = preg_replace( '|(.+?src=")(.+?)(")|is', "\\1" . $urlRoot . "/\\2\\3", $allData );
你也可以这样做:
$allData = preg_replace( '|\bsrc="([^"]+)|is', 'src="' . $urlRoot . "/$1", $allData );