6

Java Escape の文字列を PHP の Index Unicode に変換するフォームはありますか?

私はこの文字列を持っています:

$ str = "\ud83d\ude0e";

そして、U+ の後の部分を取得する必要があります。

U+1F60E 

またはpythonコード:

u'\U0001f60e'

対応コード: http: //www.charbase.com/1f60e-unicode-smiling-face-with-sunglasses

ありがとうございました。

====編集09/03 ====

返信が遅くなり申し訳ありませんが、必要なことを行うことができません。

文字を画像に置き換える必要があるため、次のようにします。

$src = "Hello "."\ud83d\ude0e";

$replaced = preg_replace("/\\\\u([0-9A-F]{1,8})/i", "&#x$1;", $src);

$replaced = str_replace('&#x1f60e', '<img src="data/emoji_new/1F60E.png">', $replaced);

$result = mb_convert_encoding($replaced, "UTF-8", "HTML-ENTITIES");

しかし、うまくいきません..結果は次のとおりです。

"Hello ��"

もっとアイデアはありますか??

ありがとうございました!

4

1 に答える 1

2

PHPに非常に似ています: Unicode コードポイントを UTF-8 に変換します

可能であれば、4 バイト文字からまっすぐ進みます。

$src = "Hello \u0001f60e";

$replaced = preg_replace("/\\\\u([0-9A-F]{1,8})/i", "&#x$1;", $src);

$result = mb_convert_encoding($replaced, "UTF-8", "HTML-ENTITIES");

echo "Result is [$result] and string length is ".mb_strlen($result);

ほとんどの人のブラウザでは正しく表示されないことがほぼ確実にあるものを出力します。

Result is [Hello ] and string length is 10

または、2 つの UTF-16 コードから:

$src = "Hello "."\ud83d\ude0e";

$replaced = preg_replace("/\\\\u([0-9A-F]{1,4})/i", "&#x$1;", $src);

$result = mb_convert_encoding($replaced, "UTF-16", "HTML-ENTITIES");

$result = mb_convert_encoding($result, 'utf-8', 'utf-16');

echo "Result is [$result] and string length is ".mb_strlen($result)."\n";

$resultInHex = unpack('H*', $result);

$resultInHex = $resultInHex[1];

$resultSeparated = implode(', ', str_split($resultInHex, 2));

echo "in hex: ".$resultSeparated;

出力:

Result is [Hello ] and string length is 10
in hex: 48, 65, 6c, 6c, 6f, 20, f0, 9f, 98, 8e

「Java エスケープとは何ですか?」と疑問に思っている方のために説明すると、Java はすべての文字を内部で UTF-16 にエンコードします。

于 2013-03-01T15:18:35.010 に答える