关于preg_replace函数的问题讲解

请问下那此句语句的作用。给我解释一下其中的“?”,“e","i","s"符号分别是什么意思,和它们起到了什么作用。还有就是除了"/eis”外还有其他什么模式了吗?   

  如果有相关的学习资料可以给我吗?谢谢,各位的帮助!谢谢。

$post=preg_replace("/\[html\](.+?)\[\/html\]/eis","htmlcode('\\1')",$post); 

修饰符:   

          在正则表达式里面的修饰符可以改变正则的很多特性,使得正则表达式更加适合你的需要(注意:修饰符对于大小写是敏感的,这意味着"e"并不等于"E")。正则表达式里面的修饰符如下:     

  i   :如果在修饰符中加上"i",则正则将会取消大小写敏感性,即"a"和"A"   是一样的。     

  m:默认的正则开始"^"和结束"$"只是对于正则字符串如果在修饰符中加上"m",那么开始和结束将会指字符串的每一行:每一行的开头就是"^",结尾就是"$"。     

  s:如果在修饰符中加入"s",那么默认的"."代表除了换行符以外的任何字符将会变成任意字符,也就是包括换行符!     

  x:如果加上该修饰符,表达式中的空白字符将会被忽略,除非它已经被转义。     

  e:本修饰符仅仅对于replacement有用,代表在replacement中作为PHP代码。     

  A:如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。比如说"/a/A"匹配"abcd"。     

  E:与"m"相反,如果使用这个修饰符,那么"$"将匹配绝对字符串的结尾,而不是换行符前面,默认就打开了这个模式。     

  U:和问号的作用差不多,用于设置"贪婪模式"。

?表单非贪婪匹配,即尽可能少的匹配和

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]中间的内容   

  e表示可以使用函数来处理向后引后的子匹配部分   

  i表未不区分大小写,   

  s表示.也匹配换行符   

假设有如下字符串   

  this is a text

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]this is another text

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]   

  使用/\[html\](.+?)\[\/html\]/和使用[html\](.+)\[\/html\]/U的结果是一样的,   

  都是代表非贪婪,只不过一个用了修正符,一个用了语法。   

  结果是this is a text

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]和this is another text

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]   

  两个匹配,   

  而/\[html\](.+)\[\/html\]/的结果是   

  this is a text

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]this is another text

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]一个匹配   

  因为整个字符也是符合以""开头以"

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]"结尾,只不过是获得更多的字符串

时间: 2024-08-02 17:40:18

关于preg_replace函数的问题讲解的相关文章

关于preg_replace函数的问题讲解_正则表达式

请问下那此句语句的作用.给我解释一下其中的"?","e","i","s"符号分别是什么意思,和它们起到了什么作用.还有就是除了"/eis"外还有其他什么模式了吗?      如果有相关的学习资料可以给我吗?谢谢,各位的帮助!谢谢.      $post=preg_replace("/\[html\](.+?)\[\/html\]/eis","htmlcode('\\1')&qu

eregi_replace与preg_replace 函数代码的用法比较_正则表达式

eregi_replace ( string pattern, string replacement, string string ) preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit [, int &count]] ) 以上两个函数基本义定义我知道 但是里面样式或参数的定义我搞不懂 例如以下是UBB与YBB Code的用法 $str = eregi_replace("\\[url]ht

php preg_replace函数基础与实例代码

//preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) 主题为匹配搜索模式,替换替换 /* 要搜索的模式.它可以是一个字符串或一个字符串数组. 电子修饰符使preg_replace函数()替代治疗后,适当引用作为参数是php教程代码进行替换.提示:请确保置换构成一个有效的php代码字符串,否则php将抱怨在包含preg_replace函

eregi_replace与preg_replace 函数代码的用法比较

eregi_replace ( string pattern, string replacement, string string ) preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit [, int &count]] ) 以上两个函数基本义定义我知道 但是里面样式或参数的定义我搞不懂 例如以下是UBB与YBB Code的用法 $str = eregi_replace("\\[url]ht

PHP多维数组排序函数 array_multisort() 实例讲解

一.先看最简单的情况. 有两个数组: $arr1 = array(1, 9, 5);$arr2 = array(6, 2, 4); array_multisort($arr1, $arr2); print_r($arr1); // 得到的顺序是1,5,9print_r($arr2); // 得到的顺序是6,4,2 我估计两个数组的值自始至终都是对应着的:1对应6,9对应2,5对应4.我们再加多一个数组看看会怎样: $arr1 = array(1, 9, 5);$arr2 = array(6, 2

PHP 5.2下preg_replace函数的问题

preg_replace 使用的超过了php5.2默认允许的字节 也就是pcre.backtrack_limit和pcre.recursion_limit的大小的问题. Discuz!6.0.0正式版程序发布以来,大家都热火朝天的升级中,但是部分插件在6.0下出现了问题 比如http://www.discuz.net/viewthread.php?tid=559133这个银行插件 在php为5.2.0及以上的环境下安装以后会出现白屏的问题 从Discuz!用户的角度考虑,我们需要去协助插件作者解

自定义ubb代码,preg_replace()函数的一些代码_正则表达式

function ubb($Text) {    $Text=htmlspecialchars($Text);    $Text=ereg_replace("\r\n","<br>",$Text);    $Text=ereg_replace("\r","<br>",$Text);    $Text=nl2br($Text);    $Text=preg_replace("/\\t/is&qu

PHP5.2下preg_replace函数的问题_php技巧

preg_replace 使用的超过了php5.2默认允许的字节,也就是pcre.backtrack_limit和pcre.recursion_limit的大小的问题. Discuz!6.0.0正式版程序发布以来,大家都热火朝天的升级中,但是部分插件在6.0下出现了问题 比如http://www.discuz.net/viewthread.php?tid=559133这个银行插件 在php为5.2.0及以上的环境下安装以后会出现白屏的问题 从Discuz!用户的角度考虑,我们需要去协助插件作者解

php中使用preg_replace函数匹配图片并加上链接的方法_php技巧

介绍:preg_replace 执行正则表达式的搜索和替换,如果只是单纯的匹配字符串建议使用str_replace(),因为其执行效率高的多.mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])      在 subject 中搜索 pattern 模式的匹配项并替换为 replacement.如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -