设为首页 收藏本站
查看: 560|回复: 0

[经验分享] php学习笔记(八)正则表达式

[复制链接]

尚未签到

发表于 2017-4-4 10:57:27 | 显示全部楼层 |阅读模式
  正则表达式

/**
* 正则表达式
*      描述字符排列模式的一种语法规则
*      字符串的模式分割、匹配、查找、替换
*
* 1.组成字符:abc... 123...特殊字符:()?^$*
*
* 2.两种函数库,功能相似;效率有差别
*      PCRE  以preg_ 开头的(执行效率高一些)
*      POSIX  以ereg_ 开头的
*
* 3.通常定界符用//来表示;除了字母数字和\不允许作为定界符,其他的都可以
*    组成:
*      原子:
*         普通字符:英文、数字、标点、其他、(abc)、原子表:[abc]
*        转义字符:
*             \d:匹配一个数字0-9;
*             \D:匹配除数字以外的任何一个字符
*             \w:一个字母、数字、下划线
*             \W:除一个字母、数字、下划线的符合
*             \s:匹配一个空白字符:\f\n\r\t\v这些字符
*             \S:匹配除空白字符外的任意字符
*             \oNN:八进制
*             \xNN:十六进制
*         原子表:只匹配其中一个字符
*             [abc]
*             [^abc]取反
*             [a-z]
*      元字符:(有特殊功能用途的字符)
*         *:0次或者多次匹配前一个原子
*         +:至少匹配一次前一个原子
*         ?:0次或者一次匹配前一个原子
*         .:匹配除换行字符以外的任何一个字符,相当于[^\n\r]
*         |:abc|efg匹配abc或者efg
*         ^:匹配字符串串首的原子/^abc/必须匹配以abc开头的字符串
*         $:匹配字符串串尾的原子/abc$/必须以abc结尾
*         \b:匹配单词的边界/\bis\b/匹配is两边都有边界的字符例如:this is a
*         \B:匹配单词边界以外的
*         {m}:表示其前原子恰好出现m次
*         {m,n}:表示其前的原子出现m到n次
*         {m,}:至少出现m次
*         ():括号中整体表示一个原子
*      模式修正字符:(i,U,s,x,m,e,D,等)
*         标记在在整个模式之外//之外;例如:/abc/i
*         可以进行组合:/abc/iUsx
*         i:大小写同时匹配
*         m:将字符串视为多行
*         s:将字符串视为单行,换行符作为普通字符
*         x:将模式中的空白忽略
*         e:在preg_replace()使用;可以将替换出来的字符当做函数或者表达式来执行
*             preg_replace("/\d/e","md5(MM)",$str,$limit)
*         A:强制从目标字符串开头开始匹配
*         D:美元的元字符匹配字符串结尾;如果有换行就无法成功
*         U:匹配到最近的字符串
*
* 4.通常是按照由左到右的顺序依次执行
*         优先级
*             1.模式单元:()
*             2.重复匹配:?*+{}
*             3.边界限制:^$\b\B
*             4.模式选择:|
*
* 5.preg_的函数
*      preg_match($pattern,$str,$content)
*         在str中是否存在pattern;
*         如果存在赋值到content的数组中;并返回true
*         content[0]表示整个匹配
*         content[1]表示第一个匹配的结果;/(1)(2)(3)/即(1)中匹配的内容
*      preg_match_all($pattern,$str,$content)(与preg_match有区别)
*         在str中是否存在pattern;
*         如果存在赋值到content的数组中;并返回true
*         content[0]表示整个匹配
*         content[1]表示第一个匹配的结果;/(1)(2)(3)/即(1)中匹配的内容
*      preg_replace($pattern,$replacment,$str,$limit)
*         第一个:模板
*         第二个:要变成的字符串(可以用\\num来代表第几个()型原子)
*         第三个:数据源
*         第四个:替换前多少个
*         参数都可以是数组形式
*      preg_split($pattern,$str,$limit)
*      preg_grep($pattern,$array)
*         返回一个数组,其中包括在input数组中给定的与模式匹配的单元
*      preg_
*      preg_
*
* 6.UBBCode转义
*      => <b></b>
*      preg_replace("/[.*]/","",$str,limit);
*
*/
$str = $_GET["str"];
$mode="/abc/";
//如果匹配成功,放入第三个参数
if (preg_match($mode,$str,$content)){
echo"匹配成功,匹配出来的字符串是:".$content[0]."<br>";
}else{
echo"不匹配失败<br>";
}
$str = "date time is ".date("Y-m-d H:i a")." php<br>";
echo $str;
echo preg_replace("/(\d{4}-\d{2}-\d{2})(\d{2}:\d{2}) [ap]m/","<font color=red>\\1</font><fontcolor=green>\\2</font>", $str);

//验证分割函数
@$str = "date. time, is ".date("Y-m-d H:i a")."php<br>";
echo $arr = var_dump(preg_split("/[,.\\s]/", $str));
$arr = preg_split("/[,.\\s]/", $str);
foreach($arras$value){
echo$value."<br>";
}

//验证BBUCode
$str = "...;sdfjos";
$pattern = array(
"/\[b\](.+?)\[\/b\]/is",
"/\[u\](.+?)\[\/u\]/is");
$replacement = array(
"<b>\\1</b>",
"<u>\\1</u>");
echo preg_replace($pattern, $replacement, $str);

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-359985-1-1.html 上篇帖子: php 导出word格式的数据 下篇帖子: PHP一个类AOP的实现
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表