如何使用简单的dom html从后台URL返回链接?

时间:2013-09-27 19:23:31

标签: php html css dom web-crawler

我正在尝试获取背景链接

<div class="mine" style="background: url('http://www.something.com/something.jpg')"></div>

我正在使用find('div.mine')

$link = find('div.mine');

$ link返回包含所有

的html代码

我如何解析所以它只返回链接?

2 个答案:

答案 0 :(得分:1)

这种语法不太正确。您正在进行$link = find('div.mine');,但应该是$link = $yourHTML->find('div.mine');

首先获取类名mine的所有div,循环遍历它们,然后获取样式属性。现在你将有一个字符串:

background: url('http://www.something.com/something.jpg') 

然后,您可以使用CSS Parser(推荐方式)或正则表达式从该字符串中仅抓取URL部分。

if(preg_match('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $link, $matches)) {
    $image_url = $matches[0];
}

完整代码:

$html = file_get_html('file.html');
$divs = $html->find('div.mine');
foreach ($divs as $div) { 
    $link = $div->style; 
}

if(preg_match('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $link, $matches)) {
    $image_url = $matches[0];
}
echo $image_url;

输出:

http://www.something.com/something.jpg

网址匹配正则表达式模式来自make_clickable中的Wordpress'wp-includes/formatting.php函数。有关完整的实施,请参阅this帖子。

答案 1 :(得分:0)

尝试使用substr()函数提取文本