登录  /  注册

php正则替换函数有哪些

青灯夜游
发布: 2021-06-03 15:44:25
原创
2363人浏览过

php正则替换函数有:1、preg_replace(),执行一个正则表达式的搜索和替换;2、preg_filter();3、preg_replace_callback();4、preg_replace_callback_array()。

php正则替换函数有哪些

本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑

php正则替换函数

1、preg_replace()函数

preg_replace 函数执行一个正则表达式的搜索和替换。

语法

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
登录后复制

搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换。

参数说明:

  • $pattern: 要搜索的模式,可以是字符串或一个字符串数组。

  • $replacement: 用于替换的字符串或字符串数组。

  • $subject: 要搜索替换的目标字符串或字符串数组。

  • $limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。

  • $count: 可选,为替换执行的次数。

返回值

  • 如果 subject 是一个数组, preg_replace() 返回一个数组, 其他情况下返回一个字符串。

  • 如果匹配被查找到,替换后的 subject 被返回,其他情况下 返回没有改变的 subject。如果发生错误,返回 NULL。

示例:

<?php
$string = &#39;google 123, 456&#39;;
$pattern = &#39;/(\w+) (\d+), (\d+)/i&#39;;
$replacement = &#39;php ${2},$3&#39;;
echo preg_replace($pattern, $replacement, $string);
?>
登录后复制

输出:

php 123,456
登录后复制

2、preg_filter()函数

preg_filter 函数用于执行一个正则表达式搜索和替换。

语法

mixed preg_filter ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
登录后复制

preg_filter() 等价于 preg_replace() ,但它仅仅返回与目标匹配的结果。

示例:比较preg_filter() 和preg_replace()

<?php$subject = array(&#39;1&#39;, &#39;a&#39;, &#39;2&#39;, &#39;b&#39;, &#39;3&#39;, &#39;A&#39;, &#39;B&#39;, &#39;4&#39;); 
$pattern = array(&#39;/\d/&#39;, &#39;/[a-z]/&#39;, &#39;/[1a]/&#39;); 
$replace = array(&#39;A:$0&#39;, &#39;B:$0&#39;, &#39;C:$0&#39;); 
 
echo "preg_filter 返回值:\n";print_r(preg_filter($pattern, $replace, $subject)); 
 
echo "preg_replace 返回值:\n";print_r(preg_replace($pattern, $replace, $subject)); 
?>
登录后复制

输出:

preg_filter 返回值:
Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [7] => A:4
)
preg_replace 返回值:
Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [5] => A
    [6] => B
    [7] => A:4
)
登录后复制

可以看出 preg_filter 只返回匹配结果,不匹配的直接忽略,而 preg_replace 将不匹配的结果 'A' 'B' 元素也一起返回。

3、preg_replace_callback()函数

preg_replace_callback 函数执行一个正则表达式搜索并且使用一个回调进行替换。

语法

mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )
登录后复制

这个函数的行为除了可以指定一个 callback 替代 replacement 进行替换字符串的计算,其他方面等同于 preg_replace()。

参数说明:

  • $pattern: 要搜索的模式,可以使字符串或一个字符串数组。

  • $callback: 一个回调函数,在每次需要替换时调用,调用时函数得到的参数是从subject 中匹配到的结果。

  • $subject: 要搜索替换的目标字符串或字符串数组。

  • $limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。

  • $count: 可选,为替换执行的次数。

返回值

  • 如果subject是一个数组, preg_replace_callback()返回一个数组,其他情况返回字符串。 错误发生时返回 NULL。

  • 如果查找到了匹配,返回替换后的目标字符串(或字符串数组), 其他情况subject 将会无变化返回。

示例:

<?php
header("Content-type: text/html; charset=utf-8");
// 将文本中的年份增加一年.
$text = "愚人节是 04/01/2020<br>";
$text.= "去年元旦是 12/24/2019<br>";
// 回调函数
function next_year($matches)
{
  // 通常: $matches[0]是完成的匹配
  // $matches[1]是第一个捕获子组的匹配
  // 以此类推
  return $matches[1].($matches[2]+1);
}
echo preg_replace_callback(
            "|(\d{2}/\d{2}/)(\d{4})|",
            "next_year",
            $text);
 
?>
登录后复制

输出:

愚人节是 04/01/2021
去年元旦是 12/24/2020
登录后复制

4、preg_replace_callback_array()函数

preg_replace_callback_array 函数执行一个正则表达式搜索并且使用一个回调进行替换。

语法

mixed preg_replace_callback_array ( array $patterns_and_callbacks , mixed $subject [, int $limit = -1 [, int &$count ]] )
登录后复制

函数类似于 preg_replace_callback(), 但它是基于每个模式匹配来回调函数进行替换。

参数说明:

  • $patterns_and_callbacks: 关联数组,key(模式) => value(回调函数)

  • $subject: 要查找的和替换的字符串或数组。

  • $limit: 可选,每个模式最大的替换次数,默认为 -1(无限制,全部匹配完)。

  • $count: 可选,指定替换的次数。

返回值

  • 如果 subject 是一个数组返回数组,否则返回字符串。发生错误则返回 NULL。

  • 如果查找到了匹配,返回替换后的目标字符串(或字符串数组), 其他情况 subject 将会无变化返回。

示例:

<?php
$subject = &#39;Aaaaaa Bbb&#39;;
 
preg_replace_callback_array(
    [
        &#39;~[a]+~i&#39; => function ($match) {
            echo strlen($match[0]), &#39; matches for "a" found&#39;, PHP_EOL;
        },
        &#39;~[b]+~i&#39; => function ($match) {
            echo strlen($match[0]), &#39; matches for "b" found&#39;, PHP_EOL;
        }
    ],
    $subject
);
?>
登录后复制

输出:

6 matches for "a" found
3 matches for "b" found
登录后复制

说明:

  • 该函数在 PHP7+ 版本支持。

推荐学习:《PHP视频教程

以上就是php正则替换函数有哪些的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号