PHP中的HTML DOM解析器

时间:2012-10-15 16:37:16

标签: php html dom

使用PHP Simple HTML DOM Parse但无法显示图像。

我不是编码员,我正试图从网站上提取文章和图片。文章很好,但图像没有显示。相反,部分路径显示例如

> //ssl.gstatic.com/ui/v1/button/search-white.png
> //ssl.gstatic.com/ui/v1/button/search-white.png
> //ssl.gstatic.com/ui/v1/icons/common/settings.png

以谷歌为例,这是我正在使用的代码:

<?php 
$html = file_get_html('https://news.google.com/nwshp?hl=en&tab=in');  

foreach($html->find('h2') as $e) 
     echo $e->innertext . '<br><br>';  

foreach($html->find('div.jsdisplay') as $e) 
     echo $e->innertext . '<br>'; 

foreach($html->find('img') as $element) 
     echo $element->src . '<br>';
?>

感谢您的帮助

3 个答案:

答案 0 :(得分:2)

你应该替换

foreach($html->find('img') as $element)
    echo $element->src . '<br>';

foreach ( $html->find('img') as $element ) {
    $img = str_replace(array("//ssl"), array("http://ssl"), $element->src);
    for($i = 0; $i < 5; $i ++) {
        $img = str_replace("//nt$i", "http://nt$i",$img);
    }
    echo "<img src=\"$img\"  /> <br>";
}

答案 1 :(得分:0)

//ssl.gstatic.com/ui/v1/button/search-white.png是一个相对URI(未指定方案,因此它将使用相同的方案(例如http:或https :)作为它出现的页面。)

像解决任何其他相对URI一样解决它。

  

我的问题是如何使用原始帖子中的代码显示图像。

您必须输出<img>标记而不是URI作为纯文本。

答案 2 :(得分:0)

在您对原始网站网址的最后评论后更新我的回答'http://frielatvsales.com/QuadAttachments.htm'

尝试以下代码。

include_once "simplehtmldom/simple_html_dom.php";


$url = "http://frielatvsales.com/QuadAttachments.htm";

$html = file_get_html($url); 

preg_match('@^(?:http://)?([^/]+)@i', $url, $matches);

$host = $matches[1];

foreach($html->find('h2') as $e) {

echo $e->innertext . '<br><br>';  
}

foreach($html->find('div.jsdisplay') as $e) {

echo $e->innertext . '<br>'; 

}

foreach($html->find('img') as $element) {

echo '<img src=http://'.$host.'/'.$element->src . ' /><br>';
}