Re: [請益] 擷取網頁內容與preg_match_all
其實你的問題跟 preg_match_all 和 preg_match 沒有關係
跟用 echo 或是 print_r 也沒有關係 是你不知道 php "變數代換"的法則
變數代換法則在官網: http://0rz.tw/TOqvp
※ 引述《Slas (史雷斯)》之銘言:
: 標題: [請益] 擷取網頁內容與preg_match_all
: 時間: Wed Sep 15 00:38:12 2010
:
:
: 我要寫的功能大致上是,先抓取GOOGLE搜尋結果的頁面,
: 然後將搜尋結果中第一頁中的結果的連結抓出來。
:
: --
: 原始碼我原本是這樣寫:
:
: $url ="http://www.google.com.tw/search?hl=zh-TW&q=地震&meta=&aq=f&oq=";
: $fp = file_get_contents($url);
:
: preg_match_all("/<h3 class=\"r\"><a href=\"(.+?)\" class=l>/", $fp,
: $data,PREG_SET_ORDER);
:
: echo "網址:$data[0][1]"."\n";
: echo "網址:$data[1][1]"."\n";
: .
: .
: .
: --
: 但是以上的輸出結果只會顯示:
:
: 網址:Array[1]
:
: 網址:Array[1]
echo其實可以印出你想要的字串 只是你原本寫法 echo "網址:$data[0][1]"."\n";
php會把它看成 echo "網址:$data[0]"."[1]\n";
它只會把變數解析到陣列的第一維 $data[0] 是什麼? 也是陣列 才會印出Array[1]
按照官網所述 你要在雙引號內用二維陣列 屬於 Complex syntax
所以你要這樣用 echo "網址:{$data[0][1]}"."\n";
:
: --
:
: 但如果我將原始碼改為:
: $url ="http://www.google.com.tw/search?hl=zh-TW&q=地震&meta=&aq=f&oq=";
: $fp = file_get_contents($url);
:
: preg_match("/<h3 class=\"r\"><a href=\"(.+?)\" class=l>/", $fp, $data);
:
: echo "$data[1]"."\n";
在這裡 陣列的第一維可以被 php 變數代換正確解析 所以出現你要的正確結果
: --
: 則可以正確輸出一項結果:
:
: 網址:http://www.cwb.gov.tw/V6/seismic/quake_index.htm
: --
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.110.112.146
推
09/15 10:22, , 1F
09/15 10:22, 1F
推
09/15 13:01, , 2F
09/15 13:01, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):