1

这是一个输入代码:

$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代码。

4

1 回答 1

1

您应该使用DomDocument来解析 html。

<i>您可以通过在元素上添加额外级别的搜索来改进此代码,但我认为该<i>标记并不常见。

一旦进入样式属性,我就使用了字符串解析。它应该被改进为更加通用,但这应该让你更接近你的目标。

    $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);
                }
            }
        }
    }
于 2013-06-06T21:02:29.000 回答