str_replace 中文替换有乱码问题 网上提供的GB_replace 不行,用 urlencode 或转成 utf-8 编码也不行。mb_eregi_replace空间不支持。完了,还有什么办法啊????? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主的mb_string扩展有没有打开啊,如果打开的话,可以用双字节可靠的mb_ereg_replace函数,因为str_replace不是双字节可靠的函数,<?echo mb_ereg_replace("格式","新格式","将中文字符的格式替换");//输出 将中文字符的新格式替换?> 是的,建议还是用mbstring的函数~ 我也想啊,不过前提要黑掉服务器。搞定了。不过这样性能应该会差点。。可以目前最稳定的中文 str_replace 啊,,哈哈。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); if(!in_array($match_needle[0][0], $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 + 1] != $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);} 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 + 1] != $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);} 汗,错了一点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);} 大家谁对织梦网系统熟悉? 我的出现问题了! 请大哥大姐们帮下忙! discuz 高手进! 网页被恶意加入游戏链接 怎么解决啊 discuz 添加DIY模块全是未使用 正则匹配一个地址 phpcms后台管理 求助 PHP递归查询父类,可以echo输出,无法return 上传图片并插入文章中 CMS怎么处理视频列表页? PHP邀请注册用户表设计,无限层级,高效查询! XAMPP 错误 课件站kejianz.com
echo mb_ereg_replace("格式","新格式","将中文字符的格式替换");
//输出 将中文字符的新格式替换
?>
$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); if(!in_array($match_needle[0][0], $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 + 1] != $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);
}
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 + 1] != $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);
}
$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);
}