%u66AE%u5149%u4E4B%u57CE2%uFF1A%u65B0%u6708cd2
关于取%u57CE2这个的有没有什么好的方法 我用的 函数 function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/(?:%u.{4})|.+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u" && strlen($v) == 6)
$ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
}
return join("",$ar);
} 用法
$str = "%u66AE%u5149%u4E4B%u57CE2%uFF1A%u65B0%u6708cd2";
echo unescape($str);打印出来是这样的
暮光之城2%uFF1A%u65B0%u6708cd2
2后面的都转化不过来 有没有那位高手可以帮帮我这个小白!!!
关于取%u57CE2这个的有没有什么好的方法 我用的 函数 function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/(?:%u.{4})|.+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u" && strlen($v) == 6)
$ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
}
return join("",$ar);
} 用法
$str = "%u66AE%u5149%u4E4B%u57CE2%uFF1A%u65B0%u6708cd2";
echo unescape($str);打印出来是这样的
暮光之城2%uFF1A%u65B0%u6708cd2
2后面的都转化不过来 有没有那位高手可以帮帮我这个小白!!!
preg_match_all("/(?:%u.{4})|.+/",$str,$r);
$ar = $r[0];
print_r($ar); Array
(
[0] => %u66AE
[1] => %u5149
[2] => %u4E4B
[3] => %u57CE
[4] => 2%uFF1A%u65B0%u6708cd2 由于“2”不满足(?:%u.{4}),导致后面的内容都被 .+ 匹配了
)正确的写法应为
preg_match_all("/(?:%u.{4})|./",$str,$r);