正则表达式将<img>相对URL更改为绝对

Sam*_*Sam 3 php regex preg-replace

我需要查看HTML字符串<img>并将src属性为相对地址的所有标记更改为绝对URL.所以这:

<img src="puppies.jpg">
Run Code Online (Sandbox Code Playgroud)

需要成为:

<img src="http://sitename.com/path/puppies.jpg">
Run Code Online (Sandbox Code Playgroud)

而忽略属性已经绝对的<img>标签src.

我正在使用PHP并假设我需要运行它preg_replace().救命!谢谢!

Roc*_*mat 8

不是正则表达式的工作.这是XML/DOM解析器的工作.

我会给DOMDocument一个机会.

$DOM = new DOMDocument;
$DOM->loadHTML($html);

$imgs = $DOM->getElementsByTagName('img');
foreach($imgs as $img){
    $src = $img->getAttribute('src');
    if(strpos($src, 'http://sitename.com/path/') !== 0){
        $img->setAttribute('src', "http://sitename.com/path/$src");
    }
}

$html = $DOM->saveHTML();
Run Code Online (Sandbox Code Playgroud)