2014-12-04 82 views
0

我使用simple_html_dom.php从http://simplehtmldom.sourceforge.net获得维基百科页面上的所有图像的完整网址,将处理大多数情况下,一个更强大的方式。我主要寻找公司和组织。下面的脚本适用于少数,但我得到致命错误:调用一个成员函数查找()一个非对象...在这个例子中的YouTube的许多搜索,也如果我尝试的Facebook在其他之中。我知道这是因为$ html不是一个对象。什么是在返回网址方面最成功的方法。请参阅下面的代码。任何帮助是极大的赞赏。简单的HTML DOM file_get_html不工作 - 有

<html> 
<body> 
<h2>Search</h2> 
<form method="post"> 
Search: <input type="text" name="q" value="YouTube"/> 
<input type="submit" value="Submit"> 
</form> 

<?php 

include 'simple_html_dom.php'; 

if (isset($_POST['q'])) 
    { 
    $search = $_POST['q']; 
    $search = ucwords($search); 
    $search = str_replace(' ', '_', $search); 
    $html = file_get_html("http://en.wikipedia.org/wiki/$search"); 

    ?> 
    <h2>Search results for '<?php echo $search; ?>'</h2> 
    <ol> 
     <?php 

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

     <?php $photo = $element->src; 

     echo $photo; 

     ?>    

     <?php endforeach; 
    ?> 
    </ol> 
<?php 
} 
?> 
</body> 
</html> 

现在我已经在下面的评论,随后建议(虽然我可能犯了一个错误),当我点击沿线的提交遇到错误:

警告:DOM文档:: loadHTMLFile(): ID ref_media_type_table_note_2已经http://en.wikipedia.org/wiki/YouTube定义,行:270 ...

警告:DOM文档:: loadHTMLFile():在http://en.wikipedia.org/wiki/YouTube已经定义ID ref_media_type_table_note_2,行:501 ...

请发ee值修正我下面的代码:

<html> 
<body> 
    <form method="post"> Search: 
     <input type="text" name="q" value="YouTube"/> 
     <input type="submit" value="Submit"> </form> 
      <?php 
      if (isset($_POST['q'])) 
       { $search = $_POST['q']; 
        $search = ucwords($search); 
        $search = str_replace(' ', '_', $search); 
        $doc = new DOMDocument(); 
        $doc->loadHTMLFile("http://en.wikipedia.org/wiki/$search"); 

        foreach ($doc->getElementsByTagName('img') as $image) 
        echo $image->getAttribute('src'); 

       } 
       ?> 
</body> 
</html> 
+4

我会尽量避开SimpleHTMLDom,并坚持使用非常成熟和维护良好的内置DOM扩展。 '$ doc = new DOMDocument(); $ doc-> loadHTMLFile(“http://en.wikipedia.org/wiki/$search”)'应该让你去 – Phil 2014-12-04 00:04:56

+0

@phil非常感谢和为无知抱歉,但我将如何实现,以获得URL图像? – Oroku 2014-12-04 00:35:43

+0

'foreach($ doc-> getElementsByTagName('img')as $ image)echo $ image-> getAttribute('src');' – Phil 2014-12-04 00:43:50

回答

1
  • 这些警告是安全的忽视。
  • 您可以在函数前面加上一个@打压他们。
  • file_get_html问题或许可以通过切换到 卷曲得到解决。
+0

感谢您的协助! – Oroku 2014-12-05 08:23:19