<?php
$A = 'ABCD ab EFGAHjanm';

$Pkey = preg_replace( '/a/iU','<strong style="color: red">\\0</strong>',$A );

echo $Pkey;
?>为什么输出后是: 2个A和2个a 都是红色,而不是只有一个A是红色啊, 这个贪婪模式没有发挥作用啊 

解决方案 »

  1.   

    不是这样理解的,执行下面代码就知道了$A = 'ABCD ab EFGAHjanm';echo $Pkey = preg_replace( '/a.+a/iU','<strong style="color: red">\\0</strong>',$A );
    echo '<br>';
    echo $Pkey = preg_replace( '/a.+a/i','<strong style="color: red">\\0</strong>',$A );
      

  2.   

    lz理解有误
    贪婪模式:  
      要匹配以字母"a"开头字母"b"结尾的字符串,但是需要匹配的字符串在"a"后面含有很多个"b",比如"a   bbbbbbbbbbbbbbbbb",那正则表达式是会匹配第一个"b"还是最后一个"b"呢?如果你使用了贪婪模式,那么会匹配到最后一个"b",反之只是匹配到第一个"b"。    
              使用贪婪模式的表达式如下:    
      /a.+?b/    
      /a.+b/U    
      不使用贪婪模式的如下:    
      /a.+b/
      

  3.   

    这个贪婪是用于模糊匹配时
    让第一个A变色可以这样$A = 'ABCD ab EFGAHjanm';
    $Pkey = preg_replace( '/a/iU','<strong style="color: red">\\0</strong>',$A, 1);
    echo $Pkey;