第一件事情,請不要嘗試解析HTML隨意用正則表達式,這是行不通的,這將打破,遲早的事。正則表達式不是解析html的工具,它不能正確解析它。 3個簡單的例子:
<a href='stuff'> (different quotes)
<!-- <a href="stuff">-->
<a style='something' href="stuff">
這些將打破你的申請。有無數的其他例子,這將不會工作,並會打破它!甚至Chuck Norris也不能正確解析html,NOONE可以!
但我相信你已經知道了,這是已知的HTML,它是不會在公衆場合公佈的只是簡單的小數量有限,所以讓我們回到你的問題:
preg_match_all預計,正則表達式帶有分隔字符,它匹配你在它們之間寫的所有東西。如果你寫
'<a href="(.*?)">'
爲正則表達式,它會將「<」在開始時爲分隔字符,因此不匹配的。寫斜槓(或任何其他字符),以防萬一它:現在
preg_match_all('/<a href="(.*?)">/', $page, $result);
,它會像匹配:
[0] => <a href="/stuff">
但你只想要「/東西」。 $ result給你一個數組。在$ result [0]中匹配所有正則表達式,在$ result [1]中匹配first(),在$ result [2]中匹配second()子表達式,等等......所以,你想要要查看$ result [1],你應該在那裏找到你想要的。
'$ page'是什麼:整個頁面還是隻有原始HTML文件中的一行? –