作者Slas (史雷斯)
看板PHP
标题[请益] 撷取网页内容与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]
--
但如果我将原始码改为:
$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";
--
则可以正确输出一项结果:
网址:
http://www.cwb.gov.tw/V6/seismic/quake_index.htm
--
上下两个程式码差别在preg_match_all改为preg_match。
应该算是可以测试出我preg_match中第一个判别用参数是正确的,
但是我用preg_match_all下去跑却只会显示 网址:Array[1]
实在是令我不解 囧>
这边想请问是不是我preg_match_all的用法不对或是甚麽其他问题,
导致第一段程式法无法运正常运作?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.120.142
1F:推 shadowjohn:回传是 array~ 09/15 00:48
2F:→ shadowjohn:print_r($data); 你就会知道该怎带了 09/15 00:49
3F:→ Slas:我直接将echo改为print_r就变正解了 谢谢 不过两者差别在哪? 09/15 00:59
6F:→ shadowjohn:print_r 可以以递回的方式印出 变数里额外的物件或阵列 09/15 03:10
7F:→ shadowjohn:echo 只能印出 变数代表什麽 09/15 03:10