php正则表达式详解:详解PHP正则表达式替换实现

  PHP正则表达式替换实现是如何呢?首先向你介绍下PHP preg_replacePHP preg_replace使用是我们实现思路方法那么对于PHP正则表达式替换实现过程我们从例子入手

  PHP正则表达式替换相关概念:

  preg_replace:执行正则表达式搜索和替换

mixed preg_replace (   
mixed pattern,   
mixed replacement,   
mixed subject [,  limit]) 


  preg_replace:允许你替换串中匹配到你定义正则表达式个简单注释移除功能:

preg_replace('[(/*)+.+(*/)]', '', $val); 

  这段代码可以移除在 PHP 和 CSS 中使用 /* 注释 */ 格式多多行注释其中 3个参数分别为正则表达式要替换成串和要替换目标串(这里要做移除功能所以是个空白串 -> '')如果你想匹配次级规则可以使用 $0 代表全部匹配$1、$2 等以此类推代表分别次级规则

  在 subject 中搜索 pattern 模式匹配项并替换为 replacement如果指定了 limit则仅替换 limit 个匹配如果省略 limit 或者其值为 -1则所有匹配项都会被替换

  replacement 可以包含 //n 形式或(自 PHP 4.0.4 起)$n 形式逆向引用首选使用后者每个此种引用将被替换为和第 n 个被捕获括号内子模式所匹配文本n 可以从 0 到 99其中 //0 或 $0 指是被整个模式所匹配文本对左圆括号从左到右计数(从 1 开始)以取得子模式数目

  对替换模式在个逆向引用后面紧接着个数字时(即:紧接在个匹配模式后面数字)不能使用熟悉 //1 符号来表示逆向引用举例说 //11将会使 preg_replace 搞不清楚是想要个 //1 逆向引用后面跟着个数字 1 还是个 //11 逆向引用本例中解决思路方法是使用 /${1}1这会形成个隔离 $1 逆向引用而使另个 1 只是单纯文字

  PHP正则表达式替换相关例子:

  例子 1. 逆向引用后面紧接着数字使用方法

<?php  
$ = "April 15, 2003";  
$pattern = "/(/w+) (/d+), (/d+)/i";  
$replacement = "/${1}1,/$3";  
pr preg_replace($pattern, $replacement, $);  
 
/* Output  
     
April1,2003  
*/ 
?>   


  如果搜索到匹配项则会返回被替换后 subject否则返回原来不变 subject

  preg_replace 每个参数(除了 limit)都可以是如果 pattern 和 replacement 都是将以其键名在中出现顺序来进行处理这不定和索引数字顺序相同如果使用索引来标识哪个 pattern 将被哪个 replacement 来替换应该在 preg_replace 的前用 ksort进行排序

  例子 2. 在 preg_replace 中使用索引

<?php  
$ =   
"The quick brown fox jumped over the lazy dog.";  
 
$patterns[0] = "/quick/";  
$patterns[1] = "/brown/";  
$patterns[2] = "/fox/";  
 
$replacements[2] = "bear";  
$replacements[1] = "black";  
$replacements[0] = "slow";  
 
pr preg_replace($patterns, $replacements, $);  
 
/* Output  
     
 
The bear black slow jumped over the lazy dog.  
 
*/ 
 
/* By ksorting patterns and replacements,  
   we should get what we wanted. */ 
 
ksort($patterns);  
ksort($replacements);  
 
pr preg_replace($patterns, $replacements, $);  
 
/* Output  
     
The slow black bear jumped over the lazy dog.  
*/ 
?>   


  如果 subject 是个则会对 subject 中每个项目执行搜索和替换并返回

  如果 pattern 和 replacement 都是则 preg_replace 会依次从中分别取出值来对 subject 进行搜索和替换如果 replacement 中值比 pattern 中则用空串作为余下替换值如果 pattern 是而 replacement 是则对 pattern 中每个值都用此串作为替换值反过来则没有意义了

  /e 修正符使 preg_replace 将 replacement 参数当作 PHP 代码(在适当逆向引用替换完的后)提示:要确保 replacement 构成个合法 PHP 代码否则 PHP 会在报告在包含 preg_replace 行中出现语法解析

  例子 3. 替换数个值

<?php  
$patterns = .gif' />   
("/(19|20)(/d{2})-(/d{1,2})-(/d{1,2})/",  
                   "/^/s*{(/w+)}/s*=/");  
$replace = .gif' />   
("//3///4///1//2", "$//1 =");  
pr preg_replace   
($patterns, $replace, "{startDate} = 1999-5-27");  
?>  


  本例将输出:

  $startDate = 5/27/1999

  例子 4. 使用 /e 修正符

<?php  
preg_replace   
("/(<//?)(/w+)([^>]*>)/e",  
"'//1'.strtoupper('//2').'//3'",  
$html_body);  
?>  


  这将使输入串中所有 HTML 标记变成大写以上例子运行支持版本为PHP 3>= 3.0.9, PHP 4

  PHP正则表达式替换相关内容就向你介绍到这里希望那个对你了解和掌握PHP正则表达式替换有所帮助

Tags:  php正则表达式 ue正则表达式替换 正则表达式替换 php正则表达式详解

延伸阅读

最新评论

发表评论