2017-07-29 48 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。它像魅力一樣工作。再次感謝 :) –