求助关于PHP转换汉字为UTF8字符的问题
<?phpfunctionescape($str){preg_match_all("/[\xc2-\xdf][\x80-\xbf]+|[\xe0-\xef][\x80-\...
<?php
function escape($str) {
preg_match_all("/[\xc2-\xdf][\x80-\xbf]+|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]
{3}|[\x01-\x7f]+/e",$str,$r);
//匹配utf-8字符,
$str = $r[0];
$l = count($str);
for($i=0; $i<$l; $i++){
$value = ord($str[$i][0]);
/*
if($value >= 192 && $value <= 223) $i++;//单字节
elseif($value >= 224 && $value <= 239) $i = $i + 2;//双字节
elseif($value >= 240 && $value <= 247) $i = $i + 3;//三字节
*/
if($value < 223){
$str[$i] = rawurlencode(utf8_decode($str[$i]));
//先将utf8编码转换为ISO-8859-1编码的单字节字符,urlencode单字节字符.
//utf8_decode()的作用相当于iconv("UTF-8","CP1252",$v)。
}else{
$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
}
}
return join("",$str);
}
$title="天使宝贝-开心的笑";
$url= escape(iconv('gb2312','utf-8',$title));
echo $url;
?>
如上代码 如果$title="天使宝贝开心的笑";时转换没问题 当$title="天使宝贝-开心的笑";转换出问题 求助这个怎么解决估计和中间的"-"有关系
上面的问题$title="天使宝贝-开心的笑";里的"-"也无法转换转换 展开
function escape($str) {
preg_match_all("/[\xc2-\xdf][\x80-\xbf]+|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]
{3}|[\x01-\x7f]+/e",$str,$r);
//匹配utf-8字符,
$str = $r[0];
$l = count($str);
for($i=0; $i<$l; $i++){
$value = ord($str[$i][0]);
/*
if($value >= 192 && $value <= 223) $i++;//单字节
elseif($value >= 224 && $value <= 239) $i = $i + 2;//双字节
elseif($value >= 240 && $value <= 247) $i = $i + 3;//三字节
*/
if($value < 223){
$str[$i] = rawurlencode(utf8_decode($str[$i]));
//先将utf8编码转换为ISO-8859-1编码的单字节字符,urlencode单字节字符.
//utf8_decode()的作用相当于iconv("UTF-8","CP1252",$v)。
}else{
$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
}
}
return join("",$str);
}
$title="天使宝贝-开心的笑";
$url= escape(iconv('gb2312','utf-8',$title));
echo $url;
?>
如上代码 如果$title="天使宝贝开心的笑";时转换没问题 当$title="天使宝贝-开心的笑";转换出问题 求助这个怎么解决估计和中间的"-"有关系
上面的问题$title="天使宝贝-开心的笑";里的"-"也无法转换转换 展开
2个回答
展开全部
这样改试试.
注释掉这段
/*
if($value < 223){
$str[$i] = rawurlencode(utf8_decode($str[$i]));
//先将utf8编码转换为ISO-8859-1编码的单字节字符,urlencode单字节字符.
//utf8_decode()的作用相当于iconv("UTF-8","CP1252",$v)。
}else{
$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
}
*/
然后把这行$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
拿出到底下.
========================
改完如下:
<?php
function escape($str) {
preg_match_all("/[\xc2-\xdf][\x80-\xbf]+|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]
{3}|[\x01-\x7f]+/e",$str,$r);
//匹配utf-8字符,
$str = $r[0];
//var_dump( $str);
$l = count($str);
for($i=0; $i<$l; $i++){
$value = ord($str[$i][0]);
/*
if($value >= 192 && $value <= 223) $i++;//单字节
elseif($value >= 224 && $value <= 239) $i = $i + 2;//双字节
elseif($value >= 240 && $value <= 247) $i = $i + 3;//三字节
*/
/*
if($value < 223){
$str[$i] = rawurlencode(utf8_decode($str[$i]));
//先将utf8编码转换为ISO-8859-1编码的单字节字符,urlencode单字节字符.
//utf8_decode()的作用相当于iconv("UTF-8","CP1252",$v)。
}else{
$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
}*/
$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
}
return join("",$str);
}
$title="天使宝贝'开心的笑";
$url= escape(iconv('gb2312','utf-8',$title));
echo $url;
?>
注释掉这段
/*
if($value < 223){
$str[$i] = rawurlencode(utf8_decode($str[$i]));
//先将utf8编码转换为ISO-8859-1编码的单字节字符,urlencode单字节字符.
//utf8_decode()的作用相当于iconv("UTF-8","CP1252",$v)。
}else{
$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
}
*/
然后把这行$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
拿出到底下.
========================
改完如下:
<?php
function escape($str) {
preg_match_all("/[\xc2-\xdf][\x80-\xbf]+|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]
{3}|[\x01-\x7f]+/e",$str,$r);
//匹配utf-8字符,
$str = $r[0];
//var_dump( $str);
$l = count($str);
for($i=0; $i<$l; $i++){
$value = ord($str[$i][0]);
/*
if($value >= 192 && $value <= 223) $i++;//单字节
elseif($value >= 224 && $value <= 239) $i = $i + 2;//双字节
elseif($value >= 240 && $value <= 247) $i = $i + 3;//三字节
*/
/*
if($value < 223){
$str[$i] = rawurlencode(utf8_decode($str[$i]));
//先将utf8编码转换为ISO-8859-1编码的单字节字符,urlencode单字节字符.
//utf8_decode()的作用相当于iconv("UTF-8","CP1252",$v)。
}else{
$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
}*/
$str[$i] = "\u".strtoupper(bin2hex(iconv("UTF-8","UCS-2",$str[$i])));
}
return join("",$str);
}
$title="天使宝贝'开心的笑";
$url= escape(iconv('gb2312','utf-8',$title));
echo $url;
?>
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询