我现有 中文 “嘉兴爱情海洋” 我想把通过程序把“嘉兴” 替换成空的,我的页面编码是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新手,还请多多指教
$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新手,还请多多指教
//这样就好了,全部的“嘉兴”都替换成空了
$tmp_name = str_replace('嘉兴', '', $tmp_name2);//如果只是将 嘉兴爱情海洋 的“嘉兴替换掉”
$tmp_name = str_replace('嘉兴爱情海洋', '爱情海洋', $tmp_name2);
再不行,把代码完整些贴出来。
我的项目都为utf-8,我刚试了打印出来为:"爱情海洋"
转码了,再用
$tmp_name = str_replace('嘉兴', '', $tmp_name2);