`
lhx1026
  • 浏览: 306750 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

PHP preg_replace的使用

    博客分类:
  • php
阅读更多

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

 

说明

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

 

例子1:逆向引用后面紧接着数字的用法

 

$string = "April 15, 2003";
$pattern = "/(/w+) (/d+), (/d+)/i";
$replacement = "/${1}1,/$3";
print preg_replace($pattern, $replacement, $string);

/* Output
   ======

April1,2003

*/

 

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

 

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

 

例子 2. 在 preg_replace() 中使用索引数组

 

$string = "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";

print preg_replace($patterns, $replacements, $string);

/* 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);

print preg_replace($patterns, $replacements, $string);

/* 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. 替换数个值

 

$patterns = array ("/(19|20)(/d{2})-(/d{1,2})-(/d{1,2})/",
                   "/^/s*{(/w+)}/s*=/");
$replace = array ("//3///4///1//2", "$//1 =");
print preg_replace ($patterns, $replace, "{startDate} = 1999-5-27");

 

本例将输出:

 

$startDate = 5/27/1999

 

例子 4. 使用 /e 修正符

 

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

 

这将使输入字符串中的所有 HTML 标记变成大写。

 

分享到:
评论
1 楼 joenali 2011-03-30  
$string = "April 15, 2003"; 
$pattern = "/(/w+) (/d+), (/d+)/i"; 
$replacement = "/${1}1,/$3"; 
print preg_replace($pattern, $replacement, $string); 
写错了,应改为
$string = "April 15, 2003"; 
$pattern = "/(\w+) (\d+), (\d+)/i"; 
$replacement = "\${1}1,\$3"; 
print preg_replace($pattern, $replacement, $string); 
真搞不懂你有没有测试

相关推荐

    ecmall 解决php5.6升级后的所有bug preg_replace_callback()

    在此次修复过程中,主要涉及到的是`preg_replace_callback()`函数的使用问题。`preg_replace_callback()`是PHP中的一个正则表达式处理函数,用于执行一个回调函数对每个匹配的字符串进行替换,而在PHP不同版本之间,...

    详解PHP正则表达式替换实现(PHP preg_replace,PHP preg_replace)

    首先向你介绍下PHP preg_replace,PHP preg_replace的使用是我们实现的方法,那么对于PHP正则表达式替换实现过程我们从实例入手。 PHP正则表达式替换的相关概念: preg_replace:执行正则表达式的搜索和替换 mixed...

    慎用preg_replace危险的/e修饰符(一句话后门常用)

    preg_replace函数原型: mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit]) 特别说明: /e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换...

    c#中的实现php中的preg_replace

    - PHP正则替换函数`preg_replace`和`preg_replace_callback`的使用总结 - PHP `preg_replace()` 正则替换所有符合条件的字符串 - PHP 字符串正则替换函数`preg_replace`使用说明 - PHP中`preg_replace_callback`函数...

    php中preg_replace_callback函数简单用法示例

    在学习和使用`preg_replace_callback`时,推荐进一步了解PHP的正则表达式语法,以及如何编写有效的回调函数。同时,熟悉其他与正则表达式相关的函数,如`preg_match`、`preg_match_all`和`preg_split`,将有助于提升...

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

    介绍:preg_replace 执行正则表达式的搜索和替换,如果只是单纯的匹配字符串建议使用str_replace(),因为其执行效率高的多。mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit]) ...

    PHP5.2下preg_replace函数的问题

    如果遇到复杂的替换需求,还可以考虑使用`preg_replace_callback`,它允许在匹配后执行自定义函数来决定如何替换匹配项,这样可以在一定程度上控制替换过程。 总之,解决PHP 5.2中的`preg_replace`问题通常涉及调整...

    php preg_match_all结合str_replace替换内容中所有img

    在PHP编程中,`preg_match_all` 和 `str_replace` 是两个非常重要的字符串处理函数,它们经常被用来处理HTML或XML文档中的特定内容。在这个场景中,开发者需要从采集的数据中提取并替换`&lt;img&gt;`标签,以符合站点的...

    PHP中一个有趣的preg_replace函数详解

    事情的起因是下午遇到了 preg_replace 函数,我们都知道 preg_replace 函数可能会导致命令执行。现在我们来一些情况。 0x02 经过 踩坑1: 测试代码大概是这样的: foreach ($_GET as $regex =&gt; $value) { preg_...

    php preg_replace替换实例讲解

    这个过程不仅帮助我们理解了PHP preg_replace()函数在多模式匹配下的使用方法,还展示了在复杂条件下进行精确文本替换的技巧。这对于进行动态内容生成、数据清洗、文本格式化等应用场景非常关键。学习并掌握preg_...

    深入研究PHP中的preg_replace和代码执行

    总结来说,文章深入分析了PHP中preg_replace和代码执行的问题,详细解释了使用/e模式时可能遇到的安全风险,并通过具体的案例和代码示例,揭示了这些问题背后的原理。这个知识点对于PHP开发者来说非常重要,因为他们...

    php小经验:解析preg_match与preg_match_all 函数

    下面是一个使用`preg_match_all()`来高亮显示HTML预格式化标签`&lt;pre&gt;`内所有出现的关键字(比如"php")的示例: ```php &lt;?php $str = "学习php是一件快乐的事。&lt;/pre&gt;&lt;pre&gt;所有的phper需要共同努力!&lt;/pre&gt;"; $kw = ...

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

    在本文中,我们将深入探讨`eregi_replace`与`preg_replace`这两个PHP函数,并通过具体的示例来解析它们之间的差异以及如何正确使用这些函数。同时,我们也会详细解释所提供的示例代码中的各种符号及其含义。 ### 一...

    php正则preg_replace_callback函数用法实例

    本文将深入讲解`preg_replace_callback`函数的用法,并通过实例来展示如何使用这个函数。 ### preg_replace_callback函数简介 `preg_replace_callback`函数的工作原理是,它接收三个主要参数:第一个参数是正则...

    PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)

    在前面我们也说过,基于perl的正则表达式要快于POXIS正则表达式处理函数,所以我们只介绍以preg开头的基于perl的正则表达式。注意:在能偶使用字符串函数处理的时候,就不要使用正则表达式来处理字符串,因为字符串...

    ECSHOP完美解决Deprecated: preg_replace()报错的问题

    在PHP 5.5版本中,/e修饰符被彻底弃用,并建议开发者使用preg_replace_callback函数来替代。 当ECSHOP运行在PHP 5.5及以上版本中,如果仍然使用/e修饰符,那么将会收到以下报错信息: "Deprecated: preg_replace():...

Global site tag (gtag.js) - Google Analytics