我正在尝试将像À这样的字符转换为其转义格式,例如\u00c0
。我知道这可以用json_encode
完成,但该函数会向特殊字符添加反斜杠。 (我实际上并不希望得到一个json对象,只是字符串转换):
$str = 'À ß \ Ć " Ď < Ĕ';
对于上面的字符串,它将返回
$str = '\u00c0 \u00df \\ \u0106 \" \u010e < \u0114';
如果我stripslashes
,它还会在每个uxxxx
之前删除一个。{/ p>
此特定转换是否有功能?或者最简单的方法是什么?
答案 0 :(得分:2)
您可以使用以下代码进行前进和后退
if (!function_exists('codepoint_encode')) {
function codepoint_encode($str) {
return substr(json_encode($str), 1, -1);
}
}
if (!function_exists('codepoint_decode')) {
function codepoint_decode($str) {
return json_decode(sprintf('"%s"', $str));
}
}
echo "\nUse JSON encoding / decoding\n";
var_dump(codepoint_encode("我好"));
var_dump(codepoint_decode('\u6211\u597d'));
Use JSON encoding / decoding
string(12) "\u6211\u597d"
string(6) "我好"
答案 1 :(得分:1)
$str = 'À ß \ Ć " Ď < Ĕ';
echo trim(preg_replace('/\\\\([^u])/', "$1", json_encode($str)), '"');
// ouptuts: \u00c0 \u00df \ \u0106 " \u010e < \u0114
我知道它使用json_encode(),但它是转换为\ uXXXX
的最简单方法答案 2 :(得分:0)
对@ cryptic的回答略有修改:
<强>脚本强>
$str = 'À ß \ Ć " Ď < Ĕ \\\\uxxx';
echo trim(preg_replace('/\\\\([^u])/', "$1", json_encode($string, JSON_UNESCAPED_SLASHES)), '"');
<强>输出强>
\u00c0 \u00df \ \u0106 " \u010e < \u0114 \\uxxx
答案 3 :(得分:0)
function convertChars($str) {
return json_decode("\"$str\"");
}