会用正则就会抓取。
创新互联是专业的肃州网站建设公司,肃州接单;提供做网站、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行肃州网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
不会正则,一时半会也教不错。
不过,推荐你使用phpQuery这个框架,用jQuery的使用器来抓取数据。
$ma=" /a class="text_count" href="#"(\d.*)/a/"
preg_match_all($ma,$str,$arr); 试试
如果你要div class="nav" monkey="nav"和div class="head-ad"之间的所有源码,用 preg_match 就可以,不用preg_match_all ,如果你要里面的所有的 li/li标签中的内容,可以用preg_match_all
//提取所有代码
$pattern = '/div class="nav" monkey="nav"(.+?)div class="head-ad"/is';
preg_match($pattern, $string, $match);
//$match[0] 即为div class="nav" monkey="nav"和div class="head-ad"之间的所有源码
echo $match[0];
//然后再提取li/li之间的内容
$pattern = '/li.*?(.+?)\/li/is';
preg_match_all($pattern, $match[0], $results);
$new_arr=array_unique($results[0]);
foreach($new_arr as $kkk){
echo $kkk;
}
$string_1 = '
tr
td width=15% align=rightb电话:/b/td
td width=85%86666947/td
/tr
tr
td align=right b地址:/b/td
td 春熙路8号/td
/tr
tr
td align=right b人均:/b/td
td span class=f_red_14b14/span元/td
/tr
tr
td align=rightb菜系:/b/td
td快餐/小吃/td
/tr
'
;
preg_match_all ("|td[^]*([^(b)].*)/td|", $string_1, $out, PREG_PATTERN_ORDER);
print_r($out[1]);
---------------------------------------------------------
输出结果为:
Array
(
[0] = 86666947
[1] = 春熙路8号
[2] = 快餐/小吃
)
?php
$str = "ABC'; F(ZZZ), KSE KKS(YYY), PSX-D.M(XXX)";
$arr = explode(",",$str);//分割成数组
foreach($arr as $value){//用foreach循环,也可以用for循环
$out = array();//储存匹配的数组
$title = "";//储存title部分
$text = "";//储存链接显示文本
//先把括号里的内容和括号外的内容匹配到数组$out
preg_match("|(.+)\((.+)\)|",$value,$out);
//括号里的内容就是title
$title = $out[2];
//把括号外的内容中所有符号替换成-(这里去了一下首尾空格)
$text = preg_replace("|(\W+)|","-",trim($out[1]));
//OK了,输出
echo "a href=\"#\" title=\"{$title}\" /{$text}/a,";
}
/**
最后输出:
a href="#" title="ZZZ" /ABC-F/a,a href="#" title="YYY" /KSE-KKS/a,a href="#" title="XXX" /PSX-D-M/a,
*/
?php
$str = '要求用preg_match提取一个以datainfo开始以function结尾的字符串出来,两个单词之间可以是任意字符,包含中英文和各种标点符号
提出出来的数据存到$datainfo,给下面命令使用
谢谢了';
preg_match('/datainfo(.*?)function/is', $str, $matched);
$datainfo = $matched[1];