我剛開始學習如何使用正則表達式從網站中提取數據。我的第一個目標是提取網站的標題。這裏是我的代碼是什麼樣子:爲什麼有些網站不可刮?
<?php
$data = file_get_contents('http://bctia.org');
$regex = '/<title>(.+?)<\/title>/';
preg_match($regex,$data,$match);
var_dump($match);
?>
的var_dump的結果是空的:
array(0) { }
起初我還以爲,「也許bctia.org沒有一個標題」?但是,情況並非如此,因爲我檢查了bctia.org的來源,並且其確實含有<title>
和</title>
之間的內容。
然後我想,也許我的代碼不起作用?但是,這也不是這種情況,因爲我用其他網站代替了bctia.org
,例如bing.com
或apple.com
,他們都返回了正確的結果。例如,apple.com
我得到正確的結果
array(2) { [0]=> string(20) "" [1]=> string(5) "Apple" }
所以,我必須得出的結論是bctia.org
是一個非常特殊的網站,讓我無法提取其標題...
我想知道那實際上是這樣嗎?或者,也許我的代碼有一些問題,我還沒有確定?
預先感謝您!
在這種特定的情況下,缺乏'/ s'改性劑。 – mario
我會在這裏留下:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – styfle
嗨@mario,感謝您的建議。不幸的是,在表達式中添加/s仍然不適用於bctia.org .. – Bing