我现有 中文 “嘉兴爱情海洋” 我想把通过程序把“嘉兴” 替换成空的,我的页面编码是UTF-8的,以下是我自己找的函数,但貌似替换不了,请高手指教。function str_replace_cn($needle, $str, $haystack, $charset = "gb2312"){
    $re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
    $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
    $re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
    $re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";    preg_match_all($re[$charset], $haystack, $match_haystack);
    preg_match_all($re[$charset], $needle, $match_needle);    for($i = 0; $i < count($match_needle); $i ++){
        if(!in_array($match_needle[0][$i], $match_haystack[0]))return $haystack;//无匹配
    }    $match_haystack = $match_haystack[0];
    $match_needle = $match_needle[0];    for($i = 0; $i < count($match_haystack); $i ++){
        if($match_haystack[$i] == "")continue;
        if($match_haystack[$i] == $match_needle[0]){
            if(count($match_needle) == 1){//如果只一个字符
                $match_haystack[$i] = $str;
            }else{
                $flag = true;
                for($j = 1; $j < count($match_needle); $j ++){
                    if($match_haystack[$i + $j] != $match_needle[$j]){
                        $flag = false;
                        break;
                    }
                }
                if($flag){//匹配
                    $match_haystack[$i] = $str;
                    for($j = 1; $j < count($match_needle); $j ++){
                        $match_haystack[$i + $j] = "";
                    }
                }
            }
        }
    }
    return implode("", $match_haystack);
} 函数使用如下:$tmp_name =  str_replace_cn("上海","",$tmp_name2,$charset = "gb2312"); 可以发现怎么替换,还是不行,没办法,只能请教CSDN上的高手,我是PHP新手,还请多多指教

解决方案 »

  1.   

    错了,是如下语句,郁闷,我今天被它给搞死了$tmp_name = str_replace_cn("嘉兴","",$tmp_name2,$charset = "gb2312");
      

  2.   


    //这样就好了,全部的“嘉兴”都替换成空了
    $tmp_name = str_replace('嘉兴', '', $tmp_name2);//如果只是将 嘉兴爱情海洋 的“嘉兴替换掉”
    $tmp_name = str_replace('嘉兴爱情海洋', '爱情海洋', $tmp_name2);
      

  3.   

    确认下,,php文件的编码,是否也是utf-8的
    再不行,把代码完整些贴出来。
      

  4.   

    echo str_replace("嘉兴","","嘉兴爱情海洋");
    我的项目都为utf-8,我刚试了打印出来为:"爱情海洋"
      

  5.   

    $tmp_name2的内容不是utf-8的吧?
    转码了,再用
    $tmp_name = str_replace('嘉兴', '', $tmp_name2);