php学习笔记(八)正则表达式

正则表达式

/**

 * 正则表达式

 *      描述字符排列模式的一种语法规则

 *      字符串的模式分割、匹配、查找、替换

 *

 * 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]=> <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 = "[b]...[/b];[u]sdfjos[/u]";

$pattern = array(

           "/\[b\](.+?)\[\/b\]/is",

           "/\[u\](.+?)\[\/u\]/is");

$replacement = array(

           "<b>\\1</b>",

           "<u>\\1</u>");

echo preg_replace($pattern, $replacement, $str);

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值