PHP正则表达式

来源:互联网 发布:stm8单片机视频教程 编辑:程序博客网 时间:2024/06/06 18:49
PHP正则表达式用到的参数主要有这几个,S/I/M三个参数,

/i (忽略大小写)
/g (全文查找出现的所有匹配字符)
/m (多行查找)
/gi(全文查找、忽略大小写)
/ig(全文查找、忽略大小写)

i 模式中的字符将同时匹配大小写字母
m 字符串视为多行
s 将字符串视为单行,换行符作为普通字符
x 将模式中的空白忽略

今天碰到一个问题,

1、preg_match_all只能匹配一次,最后加了个m参数就好了,发现原来字符串有换行

2、然后^字符是从后面的开始,如果字符串不是从这个后面的字符开始的就匹配不到了,不要每一个正则表达式就用上“^,$”字符,仅在需要以某字符开始,某字符结束的时候再使用,否则匹配不到!

一个采集的案例:

 

<?php

$ch = curl_init(); //初始化

$url='http://3dkb.cnhubei.com/kaijiang/default.aspx?type=2s&qi=07111';

curl_setopt($ch, CURLOPT_URL, $url);//你要访问的页面

curl_setopt($ch, CURLOPT_REFERER,'http://3dkb.cnhubei.com'); //伪造来路页面

curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); 

$str=curl_exec($ch);//执行 

header("Content-Type:text/html;charset=utf-8");

function preg_substr($start, $end, $str) //正则截取函数     

{     

    $temp =preg_split($start, $str);     

   $content = preg_split($end, $temp[1]);     

    return$content[0];     

 

function str_substr($start, $end, $str) //字符串截取函数     

{     

    $temp =explode($start, $str, 2);     

   $content = explode($end, $temp[1], 2);     

    return$content[0];     

 

$str0=preg_substr("/<tablecellspacing=\"0\" cellpadding=\"4\" border=\"0\"id=\"GridView1\"/", "/<\/table>/",$str);

preg_match_all("/<td\s+align=\"center\"><font\s+color=\".*?\">([^<]+)<\/font><\/td>/m",$str0,$str1);

print_r($str1);

curl_close($ch); //返回关闭

?>

第二个采集案例:

<?php

 

{dede:imgddimg=\'/dedegbk/uploads/allimg/130516/1-1305160ZH1-50.jpg\'text=\'\' width=\'800\' height=\'1140\'}/dedegbk/uploads/allimg/130516/1-1305160ZH1-50.jpg {/dede:img}{dede:imgddimg=\'/dedegbk/uploads/allimg/130516/1-1305160ZH1-51.jpg\'text=\'\' width=\'800\' height=\'1140\'}/dedegbk/uploads/allimg/130516/1-1305160ZH1-51.jpg{/dede:img}";

preg_match_all("/\}([^\{]*\.jpg)[\s]*\{/",$str,$matches);

print_r($matches[1]);

?>

第三个采集案例:

 

<?

//$url=isset($_GET['url'])?trim($_GET['url']):'';

//echo $url;

$url='http://v.youku.com/v_show/id_XNDk4NzIxOTI4.html';

if(strpos($url,'youku')){

if(!$content = @file_get_contents($url))

{

return "error";

}

else{

//$regexstr = '/<liclass="v_thumb"><[img|IMG].*?[src|SRC]=[\'|\"](.*?(?:[\.gif|\.jpg|jpeg|png]))[\'|\"].*?\S*<\/li>/i';

$regexstr = '/<liclass="v_thumb"><[img|IMG].*?[src|SRC]=[\'|\"](.*?)[\'|\"].*?\S*<\/li>/i';

$regexnum = preg_match($regexstr,$content,$matches);

print_r($matches);

}

}

else{

exit('不允许访问');

}

?>