• 技术文章 >后端开发 >PHP问题

    php正则替换函数有哪些

    青灯夜游青灯夜游2021-06-03 15:44:25原创65

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

    本教程操作环境: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 进行替换。

    参数说明:

    返回值

    示例:

    <?php
    $string = 'google 123, 456';
    $pattern = '/(\w+) (\d+), (\d+)/i';
    $replacement = 'php ${2},$3';
    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('1', 'a', '2', 'b', '3', 'A', 'B', '4'); 
    $pattern = array('/\d/', '/[a-z]/', '/[1a]/'); 
    $replace = array('A:$0', 'B:$0', 'C:$0'); 
     
    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()。

    参数说明:

    返回值

    示例:

    <?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(), 但它是基于每个模式匹配来回调函数进行替换。

    参数说明:

    返回值

    示例:

    <?php
    $subject = 'Aaaaaa Bbb';
     
    preg_replace_callback_array(
        [
            '~[a]+~i' => function ($match) {
                echo strlen($match[0]), ' matches for "a" found', PHP_EOL;
            },
            '~[b]+~i' => function ($match) {
                echo strlen($match[0]), ' matches for "b" found', PHP_EOL;
            }
        ],
        $subject
    );
    ?>

    输出:

    6 matches for "a" found
    3 matches for "b" found

    说明:

    推荐学习:《PHP视频教程

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

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php 正则替换函数
    上一篇:php怎么修改上传文件的大小限制 下一篇:PHP中你必须完全掌握的两种参数(附实例)精选
    第16期线上培训班

    相关文章推荐

    • deepin怎么安装php环境• 一起聊聊PHP SOCKET编程(附详解)• php字符串怎么转换对象• 如何解决php pdo oci 中文乱码问题• php怎么将date转为timestamp(时间戳)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网