这是一个输入代码:
$str='
<div class="_53d _53q">Not necessary data</div>
<div class="tagWrapper">
<i style="background-image: url(https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-ash4/p206x206/401581_10201210435645736_1028078736_n.jpg);" class="uiMediaThumbImg"></i>
<div class="taggerOverlay hidden_elem"><div class="left blackwash"></div></div>
</div>
<div class="_53d _53q">Not necessary data</div>
<div class="_53d _53q">Not necessary data</div>
<div class="tagWrapper">
<i style="background-image: url(https://fbcdn-sphotos-f-a.akamaihd.net/hphotos-ak-ash3/p206x206/486115_10200477972538937_146909394_n.jpg);" class="uiMediaThumbImg"></i>
<div class="taggerOverlay hidden_elem"><div class="left blackwash"></div></div>
</div>
<div class="_53d _53q">Not necessary data</div>
';
现在我希望输出为:
Array
(
[0] => https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-ash4/p206x206/401581_10201210435645736_1028078736_n.jpg
[1] => https://fbcdn-sphotos-f-a.akamaihd.net/hphotos-ak-ash3/p206x206/486115_10200477972538937_146909394_n.jpg
)
我想获取" <div class="tagWrapper"> <i "
属性之间的所有图像链接,并丢弃所有其他内容。请帮我给一个PHP代码。
答案 0 :(得分:1)
您应该使用DomDocument来解析html。
您可以通过在<i>
元素上添加额外级别的搜索来改进此代码,但我认为<i>
标记不常见。
进入style属性后,我使用了字符串解析。它应该被改进为更多样化,但这应该让你更接近你的目标。
$arr = array();
$dom = new DOMDocument;
$dom->loadHTML($str);
foreach ($dom->getElementsByTagName('i') as $node) {
if($node->hasAttribute('style')) {
$nodes = explode(":",trim($node->getAttribute('style')), 2);
if(trim($nodes[0]) === 'background-image') {
$pos = strpos(trim($nodes[1]), "url");
if($pos !== false) {
$arr[] = substr(trim($nodes[1]), 4, -2);
}
}
}
}