PHP抓取页面后正则截取值,只要中间的值
页面取得如下值
<dt>深圳市ABC电子有限公司</dt>
<dd><span>联系人:</span>张先生</dd>
<dd style="color: rgb(68, 153, 0);"><span>网址:</span><span class="website">Http://www.ABCDE.com</span></dd>
<dd><span>传真:</span></dd>
<dd><span>电话:</span>0755-888888888</dd>
<dd><span>邮箱:</span>sales@ABCDE.com</dd>
<dd><span>地址:</span>深圳市福田区上步南路ABCDE大厦R座9D</dd>
怎样用最简短的正则取得公司名、联系人、传真、电话、邮箱、地址等变量信息呢?基本上也就是分别取出<dt></dt>,<dd></dd>等中间的值。
[解决办法]
$str=<<<html<dt>深圳市ABC电子有限公司</dt> <dd><span>联系人:</span>张先生</dd><dd style="color: rgb(68, 153, 0);"><span>网址:</span><span class="website">Http://www.ABCDE.com</span></dd><dd><span>传真:</span></dd><dd><span>电话:</span>0755-888888888</dd><dd><span>邮箱:</span>sales@ABCDE.com</dd><dd><span>地址:</span>深圳市福田区上步南路ABCDE大厦R座9D</dd>html;preg_match_all('/<\/span>(.*?)<\/dd>|<dt>(.*)<\/dt>/m',$str,$arr);print_r($arr);
[解决办法]
<?php$str=<<<STR<dt>深圳市ABC电子有限公司</dt><dd><span>联系人:</span>张先生</dd><dd style="color: rgb(68, 153, 0);"><span>网址:</span><span class="website">Http://www.ABCDE.com</span></dd><dd><span>传真:</span></dd><dd><span>电话:</span>0755-888888888</dd><dd><span>邮箱:</span>sales@ABCDE.com</dd><dd><span>地址:</span>深圳市福田区上步南路ABCDE大厦R座9D</dd>STR;preg_match_all('/<d[dt][^>]*>(?:<span>(.*?):<\/span>)?(?:<span[^>]*>)?(.*?)(?:<\/span>)?<\/d[dt]>/m',$str,$matches);print_r($matches[1]);print_r($matches[2]);/*Array( [0] => [1] => 联系人 [2] => 网址 [3] => 传真 [4] => 电话 [5] => 邮箱 [6] => 地址)Array( [0] => 深圳市ABC电子有限公司 [1] => 张先生 [2] => Http://www.ABCDE.com [3] => [4] => 0755-888888888 [5] => sales@ABCDE.com [6] => 深圳市福田区上步南路ABCDE大厦R座9D)*/
[解决办法]
呃...
还需要改进的话分别按照:切割一下字符串就出来了...
$str=<<<HTML<dt>深圳市ABC电子有限公司</dt> <dd><span>联系人:</span>张先生</dd><dd style="color: rgb(68, 153, 0);"><span>网址:</span><span class="website">Http://www.ABCDE.com</span></dd><dd><span>传真:</span></dd><dd><span>电话:</span>0755-888888888</dd><dd><span>邮箱:</span>sales@ABCDE.com</dd><dd><span>地址:</span>深圳市福田区上步南路ABCDE大厦R座9D</dd>HTML;echo strip_tags($str);