我有一个html片段,里面有图片。我想替换src属性的值。即得到类似的东西:
<div style="position: relative" class="img-p"><a href="http://politiken.dk/indland/ECE2145750/nu-kommer-loven-om-alkolaase-spritbilister-skal-betale-6000-kr/"><img src="http://multimedia.pol.dk/archive/00802/RB_PLUS_Danskerne___802815p.jpg" width="369" height="253" alt="SPRITKONTROL" /></a></div>
对于这样的事情:
<div style="position: relative" class="img-p"><a href="http://politiken.dk/indland/ECE2145750/nu-kommer-loven-om-alkolaase-spritbilister-skal-betale-6000-kr/"><img src="http://multimedia.pol.dk/archive/00802/SNOOTS.jpg" width="369" height="253" alt="SPRITKONTROL" /></a></div>
我试过了:
$content = preg_replace('/<img\s+src="([^"]+)"[^>]+>/i', '<img src="http://multimedia.pol.dk/archive/00802/SNOOTS.jpg"', $string);
echo htmlspecialchars($content);
但是删除了宽度和高度以及alt属性。
答案 0 :(得分:2)
好的,不是使用正则表达式逻辑,而是使用DOMDocument()
呢?这个例子对我有用:
# Source HTML for this example. Broken up into lines for readability.
$html_value = '<div style="position: relative" class="img-p">'
. '<a href="http://politiken.dk/indland/ECE2145750/nu-kommer-loven-om-alkolaase-spritbilister-skal-betale-6000-kr/">'
. '<img src="http://multimedia.pol.dk/archive/00802/RB_PLUS_Danskerne___802815p.jpg" width="369" height="253" alt="SPRITKONTROL" />'
. '</a>'
. '</div>'
;
# The new `img src` URL.
$new_img_src = 'http://multimedia.pol.dk/archive/00802/SNOOTS.jpg';
# Instantiate `DOMDocument()`
$dom = new DOMDocument();
# Laod the HTML into `DOMDocument()`
$dom->loadHTML($html_value);
# Parse the `img` tags.
$img_tags = $dom->getElementsByTagName('img');
# Roll through the `img` tags.
foreach ($img_tags as $tag) {
# Set the `src` attribute to be the new value.
$tag->setAttribute('src', $new_img_src);
# Save the tag into the HTML.
$dom->saveHTML($tag);
}
# Strip out the DOCTYPE, html & body tags.
$final_tags = preg_replace('~<(?:!DOCTYPE|/?(?:html|body))[^>]*>\s*~i', '', $dom->saveHTML());
# Echo the final tags.
echo $final_tags;
答案 1 :(得分:0)
给这一个:<img\s+src=["']([^'"]+)["']
(替换为:<img src="http://multimedia.pol.dk/archive/00802/SNOOTS.jpg"
)
转换这个:
<img src="http://multimedia.pol.dk/archive/00802/RB_PLUS_Danskerne___802815p.jpg" width="369" height="253" alt="SPRITKONTROL" />
到此:
<img src="http://multimedia.pol.dk/archive/00802/SNOOTS.jpg" width="369" height="253" alt="SPRITKONTROL" />
以下是一个有效的例子:http://regex101.com/r/uE6oG5