我需要查看一串 HTML 并将src
属性是相对地址的所有<img>
标签更改为绝对 URL。所以这个:
<img src="puppies.jpg">
需要成为:
<img src="http://sitename.com/path/puppies.jpg">
同时忽略src
属性已经是绝对属性的<img>
标签。
我正在使用 PHP,并假设我需要通过 preg_replace()
运行它。帮助!谢谢!
这不是正则表达式的工作。 这是 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();
这不是正则表达式的工作。这是 XML/DOM 的工作。 解析 器。
不,不是。如果你只想为每个 src 属性添加一个前缀,最好使用简单的字符串函数,甚至不要考虑 xml、正则表达式或 dom 解析......
$str = str_replace('<img src="', '<img src="http://prefix', $str);
之后您可以清理错误的链接(已经是绝对的链接)
$str = str_replace('<img src="http://prefixhttp://', '<img src="http://', $str);
如果可以避免的话,不要用正则表达式/dom 炸毁你的代码。