【发布时间】:2011-11-15 03:42:30
【问题描述】:
我得到这样的数据:“ӘІҢҒҮҰҚӨҺ”。 将此数据六边形:d398d086d2a2d292d2aed2b0d29ad3a8d2ba 然后为 *.rtf 格式添加“\”:\'d3\'8d\'86\'2a\'d2\'2d\'ae\'2b\'d2\'ad\'a8\'2b
然后我必须得到类似这样的东西:\u1179\'3f\u1240\'3f\u1186\'3f...
但 str_replace 只替换斜线 Q_Q。
有什么建议吗?
这里是完整的代码:
<?
function strToHex($string)
{
$hex='';
for ($i=0; $i < strlen($string); $i++)
{
$hex .= dechex(ord($string[$i]));
}
return $hex;
}
function extra($txt) {
$output_arr = array (
//
"\\u1179\\'3f","\\u1240\\'3f","\\u1186\\'3f","\\u1170\\'3f","\\u1198\\'3f","\\u1200\\'3f","\\u1178\\'3f","\\u1256\\'3f","\\u1210\\'3f"
);
$input_arr = array (
//
"\\'d3\\'98","\\'d0\\'86","\\'d2\\'a2","\\'d2\\'92","\\'d2\\'ae","\\'d2\\'b0","\\'d2\\'9a","\\'d3\\'a8","\\'d2\\'ba"
);
echo "<br>";
echo "data: ".$txt."<br>";
$txt = strtohex($txt);
echo "hex: ".$txt."<br>";
for ($ii=0; $ii < strlen($txt); $ii++) {
//
if (strlen($tm1)<2) {
//
$tm1.=substr($txt,$ii,1);
}
else
{
//
$ret.="\\'".$tm1;
$tm1='';
}
}
echo "RET:[".$ret."]<br>";
$ret = str_replace($input_arr,$output_arr,$ret);
echo "RETREP:[".$ret."]<br>";
return $ret;
}
extra("ӘІҢҒҮҰҚӨҺ");
?>
【问题讨论】:
-
@Tom,不。这不适合我,这些字母取自 mysql db。他们在 unicode(utf8) 中。所以我正在尝试比较十六进制值并使用 rtf 规范格式替换它。
-
mb_str_replace 就是你要找的东西
-
各位...字符串只包含字符[0-9a-f\\'],这种情况下多字节函数会实现什么?
标签: php unicode hex rtf str-replace