码迷,mamicode.com
首页 > Web开发 > 详细

PHP教程之正则表达式

时间:2019-10-06 00:40:59      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:last   replace   lse   替换   换行   非贪婪   match   pcre   过滤   

正则表达式是一个从左到右匹配目标字符串的模式,具有强大的查询匹配功能。

手册位置:函数参考 > 文本处理 > PCRE

一、常用函数

preg_match

preg_match_all

preg_replace

preg_replace_callback

 

二、 PCRE模式

1.分隔符 分隔符可以使任意非字母数字、非反斜线、非空白字符。推荐: //

2.元字符

共有两种不同的元字符:一种是可以在模式中方括号外任何地方使用的,另外一种 是需要在方括号内使用的。

\ ^ $ .[] |()?*+{}

[\^-]

3.转义字符

\n 换行

\r 回车

\t 水平制表符

\d 任意十进制数字 

\D 任意非十进制数字 

\s 任意空白字符 

\S 任意非空白字符 

\w 任意单词字符 

\W 任意非单词字符

锚 ^开始 $结束

4.模式修饰符

i 不区分大小写

S 当一个模式需要多次使用的时候,为了得到匹配速度的提升,值得花费一些时间 对其进行一些额外的分析。如果设置了这个修饰符,这个额外的分析就会执行。

U 非贪婪模式

u 模式和目标字符串都被认为是 utf-8 的

 

课后练习 

去做一个采集网页并且获取

列表页的 链接 标题 

详细页的 内容

$str="asdasd_";if(preg_match("/[^\w]+/",$str,$num)){  echo "存在
";
}else{ echo "不存在
";
} $str="中国是世界古老的国度,存在5000年历史文明。中国目前与14亿人口,也是最大的人口国度";
//匹配数字preg_match("/[\d]+/",$str,$num);print_r($num);//子模式匹配preg_match("/([\d]+)/",$str,$num);print_r($num);//匹配所有preg_match_all("/[\d]+/",$str,$num);print_r($num);//preg_replace — 执行一个正则表达式的搜索和替换echo $str=preg_replace("/[\d]+/","$0 匹配",$str);echo "
";
//preg_replace_callback使用回调替换echo preg_replace_callback("/[\d]+/",function($matches){ return $matches[0]*2;},$str);

//匹配邮箱 $str="362606856@qq.com";if(preg_match("/\w+@\w+\.(\w)+/",$str)){ echo $str."是邮箱";}//匹配中文$str="as中ddd";if(preg_match("/[\x{4e00}-\x{9fa5}]+/u",$str)){ echo $str."含中文
";
}//过滤非法字符串$preg="美女|写真|女优|混蛋";$str="这家伙真实混蛋";if(preg_match("/$preg/",$str)){ echo $str."含非法字符
";
}

//解析html 匹配出链接和标题$html=‘
‘;preg_match_all("/<a[^>]*href=\"(.*)\"[^>]*>(.*)<\/a>/iUs",$html,$arr);print_r($arr);
//日期匹配// 将文本中的年份增加一年.$text = "April fools day is 04/01/2002\n";$text.= "Last christmas wa

PHP教程之正则表达式

标签:last   replace   lse   替换   换行   非贪婪   match   pcre   过滤   

原文地址:https://www.cnblogs.com/wu2198/p/11626150.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!