4

Àのような文字を、のようなエスケープされた形式に変換しようとしてい\u00c0ます。これはで実行できることは知っていますjson_encodeが、この関数は特殊文字に円記号を追加します。(私は実際にはjsonオブジェクトを取得することを望んでおらず、文字列変換だけを望んでいます):

$str = 'À ß \ Ć " Ď < Ĕ';

上記の文字列の場合、

$str = '\u00c0 \u00df \\ \u0106 \" \u010e < \u0114';

そして、私がそうすればstripslashes、それはまた、それぞれの前にあるものを取り除きますuxxxx

この特定の変換のための関数はありますか?またはそれを行う最も簡単な方法は何ですか?

4

4 に答える 4

3

次のコードを使用して、前後に移動できます

コード

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) "我好"
于 2015-11-25T00:45:28.273 に答える
1
$str = 'À ß \ Ć " Ď < Ĕ';

echo trim(preg_replace('/\\\\([^u])/', "$1", json_encode($str)), '"');
// ouptuts: \u00c0 \u00df \ \u0106 " \u010e < \u0114

json_encode()を使用していることは知っていますが、\uXXXXに変換する最も簡単な方法です

于 2012-11-28T21:39:00.660 に答える
0

@crypticの答えにわずかな変更:

脚本

$str = 'À ß \ Ć " Ď < Ĕ \\\\uxxx';
echo trim(preg_replace('/\\\\([^u])/', "$1", json_encode($string, JSON_UNESCAPED_SLASHES)), '"');

出力

\u00c0 \u00df \ \u0106 " \u010e < \u0114 \\uxxx
于 2012-11-28T21:54:25.457 に答える
0
function convertChars($str) {
    return json_decode("\"$str\"");
}
于 2015-04-23T12:34:21.370 に答える