本人小白,想通過百度郵編搜尋截取一個地址的郵編,在自己的網站空間裡放了個php指令碼。
因為要求不是很高,試圖通過正則匹配找到第一組“首位不為0的六位元字”,作為結果輸出,但是不管怎麼嘗試,得到的始終是一個空數組……
Regex是我從網上找的,也是過不同的形式,但是始終都得不到任何值
");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的六位元字”,作為結果輸出,但是不管怎麼嘗試,得到的始終是一個空數組……
Regex是我從網上找的,也是過不同的形式,但是始終都得不到任何值
");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.所以,很多內容,都直接合并成“一行”了。再用^,$應該是匹配不到的