<?php ///u形式的字符串 $str = preg_match_all('/(///u)([0-9a-fA-F]{4})/', '/u4e2d/u6587/uff0c/u0045/u002c/u0065/u002c/u0031/u0032/u0033', $out); //var_dump(hexdec('4e2d')); echo '<pre>'; //把4e2d形式的十六进制的数转变成UTF格式 foreach ($out[2] as $key => $value) { $mystr .= '&#'.hexdec($value); } //这里根本没有转换----看看源代码就知道了 //所以呢这里只是转换了/u0xffff形式到〹的形式 echo iconv("UTF-8", "GBK", $mystr); echo '<br />'; print_r($out); ?> 下面这里才是完美的解决方案 $str = "TTL全天候自动聚焦GD"; $str = preg_replace("|&#([0-9]{1,5});|", "/".u2utf82gb(//1)./"", $str); $str = "/$str=/"$str/";"; //这一句是执行字符串里的函数 eval($str); echo $str; function u2utf82gb($c){ $str=""; if ($c < 0x80) { $str.=$c; return chr($c); } else if ($c < 0x800) { $str.=chr(0xC0 | $c>>6); $str.=chr(0x80 | $c & 0x3F); } else if ($c < 0x10000) { $str.=chr(0xE0 | $c>>12); $str.=chr(0x80 | $c>>6 & 0x3F); $str.=chr(0x80 | $c & 0x3F); } else if ($c < 0x200000) { $str.=chr(0xF0 | $c>>18); $str.=chr(0x80 | $c>>12 & 0x3F); $str.=chr(0x80 | $c>>6 & 0x3F); $str.=chr(0x80 | $c & 0x3F); } return iconv('UTF-8', 'GBK', $str); }