发布网友 发布时间:2022-04-19 20:44
共3个回答
热心网友 时间:2023-07-02 16:36
用 int preg_match( string pattern, string subject [, array matches ] ) 来处理,实现过程我就不写了,没有验环境,下面说下思路。
用$str读入采集结果,preg_match_all("/<[^>]+.+>/", $str,$split_word)分割采集结果,得到数组$split_word,结果应该是这样子的:
$split_word[0]="<li><table><tr>"
$split_word[1]=" <td width="574"><a href="detailnew.jsp?id=803088">驻村干部</a></td>"
……
然后逐个对数组元素进行查找,首先循环查找条件1 id号:
preg_match("/id=\d+/i",$split_word[n],$id_value)
匹配的结果是数组$id_value,类似$id_value[0]="id=xxxxx",如果你要提取纯数字,还要再对这个结果提取一次。
其余字段提取仿照上面操作,对应的正则表达式:
链接标题先提取/<a[^>]+>\w+<\/a>/i, 然后再从结果中提取< /[x80-xff>]{4,}/i (即匹配四个汉字以上,汉字GBK/GB2312编码是:[x80-xff>],UTF-8编码:[x{4e00}-x{9fa5}]+/u,这一点要注意)
……
思路就是这样,比较烦人,没有下一子能就匹配所有信息的正则表达式。
热心网友 时间:2023-07-02 16:36
preg_match_all("/href=\"detailnew.+?id=(.+?)\">(.+?)<\/a>.+?href=\".+?c=(.+?)&d=(.+?)\">(.+?)<\/a>/s", $html, $find); //$html是你采集的内容
for($i=0; $i<count($find[1]); $i++){
$arr_id[] = array($find[1][$i], $find[2][$i]);
$arr_c[] = $find[3][$i];
$arr_d[] = array($find[4][$i], $find[5][$i]);
}
print_r($arr_id);
echo '<br/><br/>';
print_r($arr_c);
echo '<br/><br/>';
print_r($arr_d);
热心网友 时间:2023-07-02 16:36
答案:
$str = ’‘; //你的内容;
preg_match_all('|detailnew.jsp\?id=(.*)">(.*)</a>.*&c=(.*)&d=(.*)">(.*)</a>.*<td width="97">(.*)<|isU',$str,$main);
$id_array = $main[1];
$id_link_txt_array = $main[2];
$c_array = $main[3];
$d_array = $main[4];
$c_d_link_txt_array = $main[5];
$date_array = $main[6];