我需要看看HTML的字符串内和更改所有<img>
标签在src
属性是相对地址,以一个绝对的URL。 所以这:
<img src="puppies.jpg">
需要成为:
<img src="http://sitename.com/path/puppies.jpg">
而忽略<img>
其标签src
属性已经是绝对的。
我使用PHP,并假定我需要通过运行这个preg_replace()
救命! 和感谢!
我需要看看HTML的字符串内和更改所有<img>
标签在src
属性是相对地址,以一个绝对的URL。 所以这:
<img src="puppies.jpg">
需要成为:
<img src="http://sitename.com/path/puppies.jpg">
而忽略<img>
其标签src
属性已经是绝对的。
我使用PHP,并假定我需要通过运行这个preg_replace()
救命! 和感谢!
这不是一个正则表达式的工作。 这是一个XML / DOM解析器的工作。
我给DOM文档了一枪。
$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炸毁你的代码,如果你能避免它。