我正在試驗使用WordPress的自動註冊(即RSS驅動的博客張貼),而所缺少的是一個組件,用RSS的URL鏈接內容自動填充帖子內容(RSS與解決方案無關)。簡單的PHP屏幕抓取功能
使用標準的PHP 5,我怎麼可以創建一個名爲fetchHTML功能([URL])返回那是<body>...</body>
標籤之間發現了一個網頁的HTML內容?
請讓我知道是否有任何先決條件「包括」。 謝謝。
我正在試驗使用WordPress的自動註冊(即RSS驅動的博客張貼),而所缺少的是一個組件,用RSS的URL鏈接內容自動填充帖子內容(RSS與解決方案無關)。簡單的PHP屏幕抓取功能
使用標準的PHP 5,我怎麼可以創建一個名爲fetchHTML功能([URL])返回那是<body>...</body>
標籤之間發現了一個網頁的HTML內容?
請讓我知道是否有任何先決條件「包括」。 謝謝。
假設它永遠是<body>
而不是<BODY>
或<body style="width:100%">
或任何東西,除了<body>
和</body>
,並與你不應該使用正則表達式解析HTML,即使我約而至,這裏亞去了警告:
<?php
function fetchHTML($url)
{
$feed = '<body>Lots of stuff in here</body>';
$content = file_get_contents($url);
preg_match('/<body>([\s\S]{1,})<\/body>/m', $content, $match);
$content = $match[1];
return $content;
} // fetchHTML
?>
如果你echo fetchHTML([some url]);
,你會得到body標籤之間的html。
請注意原始警告。
有。這只是我(在模式結束前的那個m之前)。但是,例如,http://stackoverflow.com將無法正常工作,因爲開頭體標籤是'
' – hookedonwinter 2010-08-03 19:34:18明白了。感謝指針。 – Yaaqov 2010-08-03 19:41:56
我覺得你使用像SimpleDom一類的更好 - >http://sourceforge.net/projects/simplehtmldom/提取數據,你不需要寫這樣複雜的正則表達式
謝謝。不錯的圖書館,使用直觀,它包括jquery樣選擇器。截至2013年年中,它似乎仍然是一個活躍的項目。 – 2013-09-16 01:32:52
好,這是一個DOM解析器的代碼示例的要求。
<?php
function fetchHTML($url)
{
$content = file_get_contents($url);
$html=new DomDocument();
$body=$html->getelementsbytagname('body');
foreach($body as $b){ $content=$b->textContent; break; }//hmm, is there a better way to do that?
return $content;
}
從來沒有見過DomDocument()!我必須確認一下。它使我想僅僅使用jQuery的解決方案...'(<?= $ content?>).find('body').html();'heh – hookedonwinter 2010-08-04 05:20:12
@hookedonwinter哈...這將工作,我猜!如果你在瀏覽器中打開它,嗯......這讓我想起,實際上有一種叫做phpquery的http://code.google.com/p/phpquery/,它非常酷! – JAL 2010-08-04 14:44:05
JL現在你已經給了我足夠的時間來學習下一週。謝謝! – hookedonwinter 2010-08-04 14:54:43
會讓網絡更加垃圾? – 2010-08-04 04:26:33