麻烦问下 表达式 preg_replace("/[^chr(128)-chr(256)]+/is"," ",$words);中的正则表达式("/[^chr(128)-chr(256)]+/is应该怎么理解?
希望各位DGDJ 不吝赐教

解决方案 »

  1.   

    ASC码>=128的,换成空格了,,,像!$#之类的但是,多个连在一起的话,只换成一个空格
      

  2.   

    preg_replace("/[^chr(128)-chr(256)]+/is"," ",$words);preg_replace("/[^".chr(128)."-".chr(256)."]+/is"," ",$words);chr就是php里的函数
      

  3.   

    $words = '这是一个测试test';
    echo preg_replace("/[^chr(128)-chr(255)]+/is"," ",$words); //test不匹配扩展ascii编码字符
      

  4.   


    我也是这么理解的,但是 令我头晕的是 为什么“#”的ascii为35 这样的符合会被匹配
      

  5.   

    麻烦问下 下面的程序
    <?php
    $words = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSRUVWXYZ!@#$%^&*()_+-=[]\\,./{}|<>?'\"你好啊我们";
    $enStr=preg_replace("/[^chr(128)-chr(256)]+/is"," ",$words);
        $otherStr=preg_replace("/[chr(128)-chr(256)]+/is"," ",$words);
    echo 'enStr:',$enStr,'<br />', 'otherStr:',$otherStr;
    ?>
    的结果为
    enStr:0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSRUVWXYZ @ ^ *()_+-=[]\,./ <>? 
    otherStr: ! #$% & {}| '"你好啊我们
    为什么 “#”(ascii为35)这样的也会被匹配掉 这点让我理解不了(! #$% & {}| '" 这些的ascii码都小于128)
      

  6.   

    这个chr方法就没有执行,你这个正则表达的意思很奇怪
    chr是php的方法
    $words = '这是一个测试test';
    echo preg_replace("/[^".chr(128)."-".chr(255)"]+/is"," ",$words); //test
      

  7.   


    你试试看,preg_replace("/[^chr(128)-chr(256)]+/is"," ",$words);  chr是起作用了的,上面同样得到test
      

  8.   

    好象很难解决的样子baidu google 都用了 还是没有解决 郁闷疯了  直接 
      

  9.   

    http://www.cnxct.com/php%e4%b8%ad%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e5%af%b9unicode%e5%ad%97%e7%ac%a6%e7%a0%81%e7%9a%84%e5%8c%b9%e9%85%8d/
    这里已经详细分析回复。给俺分。谢谢。^_^
      

  10.   

    这个 我就我在phpchina上问的问题。呵呵
    不好意思啊。 分都分完了。 多谢