题主啊, 你好.
我觉得, 你这个任务, 用不到正则.
为什么呢?
请看里面的搜索结果是什么?
邮编 | 行政区域 |
---|---|
250102 | 山东省 济南市 历下区 经十路双号2218-5150 |
250102 | 山东省 济南市 历下区 经十东路双号33188-33688 |
250102 | 山东省 济南市 历下区 经十路单号177-3799 |
250102 | 山东省 济南市 历下区 旅游路港沟水利站机关公寓 |
好完整的结果, 这已经是一个列表了.
因为具体还没有看, 一会我来告诉你怎么处理.我先php试一下.
//有单独邮编的网址
$url = 'http://opendata.baidu.com/post/s?wd=%C9%BD%CE%F7&p=mini&rn=20';
// 没有单独邮编的网址
//$url= 'http://opendata.baidu.com/post/s?wd=%C9%BD%B6%AB%CA%A1%BC%C3%C4%CF%CA%D0%C0%FA%CF%C2%C7%F8%C6%BD%B0%B2%BA%FA%CD%AC&p=mini&rn=20';
// xpath 解析文档
$dom = new DOMDocument;
libxml_use_internal_errors(TRUE);
$dom->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;
}
?>
你去phpfiddle 试一下吧, 还行. 做这种工作, xpath方便点.