2017-07-29 12 views
0

PHPで動的なUnicodeアイコンを作成しています。 UnicodeアイコンのUTF-8コードが必要です。PHPの動的UnicodeからUTF-8コードを作成する

これまでのところ私が行っている:

$value = "1F600"; 
$emoIcon = "\u{$value}"; 

$emoIcon = preg_replace("/\\\\u([0-9A-F]{2,5})/i", "&#x$1;", $emoIcon); 
echo $emoIcon; //output 
$hex=bin2hex($emoIcon); 
echo $hex; // output 26237831463630303b 
$hexVal=chunk_split($hex,2,"\\x"); 
var_dump($hexVal); // output 26\x23\x78\x31\x46\x36\x30\x30\x3b\x 
$result= "\\x" . substr($hexVal,0,-2); 
var_dump($result); // output \x26\x23\x78\x31\x46\x36\x30\x30\x3b 

をしかし、私は直接値を入れたときに、それが正しいデータを出力します。

$emoIcon = "\u{1F600}"; 

$emoIcon = preg_replace("/\\\\u([0-9A-F]{2,5})/i", "&#x$1;", $emoIcon); 
echo $emoIcon; //output 
$hex=bin2hex($emoIcon); 
echo $hex; // output f09f9880 
$hexVal=chunk_split($hex,2,"\\x"); 
var_dump($hexVal); // output f0\x9f\x98\x80\x 
$result= "\\x" . substr($hexVal,0,-2); 
var_dump($result); // output \xf0\x9f\x98\x80 
+0

あなたの質問を明確にしてください。あなたは何を達成したいですか? –

答えて

1

\u{1F600}は、それがなければならない、double-quoted stringsで使用されるUnicodeエスケープシーケンスでありますリテラル値を持っています - あなたが見たように、"\u{$value}"を使用しようとすると動作しません(いくつか理由がありますがそれほど重要ではありません)。

"1F600"で始まり、で終了する場合は、hexdecを使用して整数に変換し、IntlChar::chrに送り、そのコードポイントをUTF-8としてエンコードします。例えば:

$value = "1F600"; 
echo IntlChar::chr(hexdec($value)); 

出力:


+0

ありがとう@paul。それは魅力のように機能します。再度、感謝します :) –

関連する問題