php抓取百度邮编搜索结果,应改如何写正则表达式?
PHP中文网
PHP中文网 2017-04-10 15:04:21
0
3
511

本人小白,想通过百度邮编搜索截取一个地址的邮编,在自己的网站空间里放了个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中文网
PHP中文网

认证高级PHP讲师

全員に返信 (3)
大家讲道理

题主啊, 你好.

我觉得, 你这个任务, 用不到正则.

为什么呢?

请看里面的搜索结果是什么?

邮编行政区域
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方便点.

いいねを押す+0
    伊谢尔伦
    (\d+)(.*?)@is", $search_result, $match); $area = array_map("strip_tags", $match[2]); print_r($match[1]); print_r($area);
    いいねを押す+0
      阿神

      把$rule = '/^[1-9]\d{5}$/';换成
      $rule = '/[1-9]\d{5}/';试试
      因为,你用了strip_tags.所以,很多内容,都直接合并成“一行”了。再用^,$应该是匹配不到的

      いいねを押す+0
        最新のダウンロード
        詳細>
        ウェブエフェクト
        公式サイト
        サイト素材
        フロントエンドテンプレート
        私たちについて 免責事項 Sitemap
        PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!