本人小白,想通过百度邮编搜索截取一个地址的邮编,在自己的网站空间里放了个php脚本。
因为要求不是很高,试图通过正则匹配找到第一组“首位不为0的六位数字”,作为结果输出,但是不管怎么尝试,得到的始终是一个空数组……
正则表达式是我从网上找的,也是过不同的形式,但是始终都得不到任何值
mb_detect_encoding($search_result),写这一句是想看看返回回来的页面的编码,但是这个函数似乎也得不到任何结果……
如果漏洞百出烦请诸位大神耐心指教,本人真的是小白一只……
回复内容: 本人小白,想通过百度邮编搜索截取一个地址的邮编,在自己的网站空间里放了个php脚本。
因为要求不是很高,试图通过正则匹配找到第一组“首位不为0的六位数字”,作为结果输出,但是不管怎么尝试,得到的始终是一个空数组……
正则表达式是我从网上找的,也是过不同的形式,但是始终都得不到任何值
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方便点.
把$rule = '/^[1-9]\d{5}$/';换成
$rule = '/[1-9]\d{5}/';试试
因为,你用了strip_tags.所以,很多内容,都直接合并成“一行”了。再用^,$应该是匹配不到的