<?php
$sTitle="title='本月'";
$str="title='sdfsdfsdfsdf'";
echo ereg_replace("(title='[\w]{0,}')", $sTitle, $str);?>这个没有匹配到,请问哪里的问题?

解决方案 »

  1.   

    $sTitle="title='本月'";
    $str="title='sdfsdfsdfsdf'";
    echo preg_replace("/(title='\w+')/i", $sTitle, $str);//这样就对了
    $sTitle="title='本月'";
    $str="title='sdfsdfsdfsdf'";
    echo ereg_replace("/(title='\w+')/i", $sTitle, $str);//这样就不对
      

  2.   

    preg_* uses a Perl-compatible regular expression syntax
    ereg_* 可以用[A-Za-z0-9_]出现问题可以查手册的
      

  3.   

    preg_*和ereg_*使用的正则语法不一样。建议学preg_*。
      

  4.   

    $str="title='sdfsdfsdfsdf'";
    $pattern="title='[a-z]+'";
    echo ereg_replace($pattern, "a", $str);
    echo "<br>";
    这个也可以,难道是ereg_replace不认\w   ?
      

  5.   

    看看手册就这么费劲吗?
    '\w' is a Perl-compatible regular expression syntax
      

  6.   

    preg使用perl语法兼容正则,ereg使用POSIX,两者正则语法有点区别
    学其中一个就可以了另:POSIX正则自php5.3后不推荐使用perl正则首先前后要有相同的分界符,你的例子中是/,POSIX则不需要
    分界符后的i表示不区分大小写,请看手册中pcre模式修正符一节判断中文或多字节字符尽可能不用[],因为[]多数按单字节计算
    例如[:]和[|]将无法区分因为:和|的GBK码前一个字节是相同的
      

  7.   

    ereg_replace 将要被淘汰的函数用preg_replace吧echo preg_replace("(title='[\w]{0,}')", $sTitle, $str);
    echo preg_replace("/(title='\w+')/i", $sTitle, $str);这两种写发 都能正确执行。