php抓取百度邮编搜索结果,应改如何写正则表达式?
因为要求不是很高,试图通过正则匹配找到第一组“首位不为0的六位数字”,作为结果输出,但是不管怎么尝试,得到的始终是一个空数组……
正则表达式是我从网上找的,也是过不同的形式,但是始终都得不到任何值
");
echo($clear_result);
echo("");
$zipcodes = search_for_zipcodes($clear_result);
print_r($zipcodes);
function search_for_zipcodes($test) {
$rule = '/^[1-9]\d{5}$/';
preg_match_all($rule,$test,$result);
return $result;
} ?>
mb_detect_encoding($search_result)
,写这一句是想看看返回回来的页面的编码,但是这个函数似乎也得不到任何结果……
如果漏洞百出烦请诸位大神耐心指教,本人真的是小白一只……
回复内容:
本人小白,想通过百度邮编搜索截取一个地址的邮编,在自己的网站空间里放了个php脚本。
因为要求不是很高,试图通过正则匹配找到第一组“首位不为0的六位数字”,作为结果输出,但是不管怎么尝试,得到的始终是一个空数组……
正则表达式是我从网上找的,也是过不同的形式,但是始终都得不到任何值
");
echo($clear_result);
echo("");
$zipcodes = search_for_zipcodes($clear_result);
print_r($zipcodes);
function search_for_zipcodes($test) {
$rule = '/^[1-9]\d{5}$/';
preg_match_all($rule,$test,$result);
return $result;
} ?>
mb_detect_encoding($search_result)
,写这一句是想看看返回回来的页面的编码,但是这个函数似乎也得不到任何结果……
如果漏洞百出烦请诸位大神耐心指教,本人真的是小白一只……
题主啊, 你好.
我觉得, 你这个任务, 用不到正则.
为什么呢?
请看里面的搜索结果是什么?
邮编
行政区域
250102
山东省 济南市 历下区 经十路双号2218-5150
250102
山东省 济南市 历下区 经十东路双号33188-33688
250102
山东省 济南市 历下区 经十路单号177-3799
250102
山东省 济南市 历下区 旅游路港沟水利站机关公寓
好完整的结果, 这已经是一个列表了.
因为具体还没有看, 一会我来告诉你怎么处理.我先php试一下.
loadHTMLFile($url);
libxml_clear_errors();
$xPath = new DOMXPath($dom);
//起作用的语句
$trs = $xPath->query('//li/a/text()|//tr/td');
//输出结果
foreach($trs as $tr) {
$str= $tr->nodeValue;
if(strlen($str)>6){
$str = array_pop( explode(' ', $str));
}
echo $str;
break;
}
?>
http://phpfiddle.org/
你去phpfiddle 试一下吧, 还行. 做这种工作, xpath方便点.
(\d+)(.*?) @is", $search_result, $match);
$area = array_map("strip_tags", $match[2]);
print_r($match[1]);
print_r($area);
把$rule = '/^[1-9]\d{5}$/';换成
$rule = '/[1-9]\d{5}/';试试
因为,你用了strip_tags.所以,很多内容,都直接合并成“一行”了。再用^,$应该是匹配不到的
上一篇: DB2创建数据库示例