zoukankan      html  css  js  c++  java
  • php正则表达式的匹配与替换

      只介绍两个与Perl兼容的正则表达式函数:

      1.preg_match_all 函数执行正则表达式匹配与搜索;

      2.preg_replace 函数执行正则表达式匹配与替换。

      示例代码:

    <?php
    
    // 正则表达式,匹配日期格式
    $pattern = "/(d{2})/(d{2})/(d{4})/";
    
    $text = "今年国庆节放假日期是10/01/2020到10/07/2020共7天,
                  10/08/2020开始上班了。";
    
    /*
      * 1.正则表达式的模式匹配与替换
      *
      * ${1}是正则表达式 $patern 的第一个“()”括号;
      * ${1} 等价于 \1 ,但最好用前一种,因为后一种不便于字符串之间分隔;
      */
    echo preg_replace($pattern, "${3}-${1}-${2}", $text);
    
    echo "<hr><pre>";
    
    /*
      * 2.正则表达式的匹配与搜索
      */
    if(preg_match_all($pattern, $text, $matches, PREG_SET_ORDER)){
        print_r($matches);
    }
    
    echo "</pre><hr>";
    echo "<br><b style='color:#000080'>匹配到".count($matches)."处字符串。</b>";
    echo "<br><b>分别是:</b>";
    
    foreach($matches as $value){
        echo "<br>".$value[0];
    }

    执行后的效果:

    <?php
    /*
      * 在使用 preg_replace()函数时,有一个专门为它提供的模式修正符“e”(PHP 7已经弃用),
      * 也只有preg_replace()函数使用此修正符。
      * 在PHP 7中,preg_replace()函数不再支持“e”,需要使用preg_replace_callback()函数来代替。
      */
      
    //$pattern = "/(</?)(w+)([^>]*>)/e";
    $pattern = "/(</?)(w+)([^>]*>)/";
    
    $text = "这个文本中有<b>粗体</b>和<u>带有下划线</u>以下<i>斜体</i>还
                  有<font color='red' size='8'>带有颜色和字体大小</font>的标记。";
                  
    //echo preg_replace($pattern, "'\1' . strtoupper('\2') . '\3'", $text);
    echo preg_replace_callback($pattern, function($r){
                return $r[1].strtoupper($r[2]).$r[3];
            }, $text);

    执行后的效果:

  • 相关阅读:
    uva 10369 Arctic Network
    uvalive 5834 Genghis Khan The Conqueror
    uvalive 4848 Tour Belt
    uvalive 4960 Sensor Network
    codeforces 798c Mike And Gcd Problem
    codeforces 796c Bank Hacking
    codeforces 768c Jon Snow And His Favourite Number
    hdu 1114 Piggy-Bank
    poj 1276 Cash Machine
    bzoj 2423 最长公共子序列
  • 原文地址:https://www.cnblogs.com/qingsong/p/13280621.html
Copyright © 2011-2022 走看看