2014-12-04 80 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