2017-07-06 2 views
0

ich eine Zeichenfolge haben, die Kugeln enthält • in folgendem Format:PHP-String mit Unicode-Zeichen ( u2022) nicht als Kugel Echo

$string = "Yay bullets!!\n\\u2022\n\\u2022\n\\u2022\n\\u2022\n\\u2022\n#somany"; 

Ich brauche die Zeichenfolge Anzeige der Kugeln Echo. Der nächste, den ich zum Ausdrucken gebracht habe, ist, $string = "\u2022"; zu machen und dann json_decode('"' . $string . '"'); zu wiederholen, was die Kugel prima druckt.

Wenn ich versuche, das gleiche zu tun, die volle $string bekomme ich überhaupt kein Ergebnis und keinen Fehler.

Hier sind einige Dinge, die ich mit den daraus resultierenden Ausgang versucht haben:

$raw = htmlspecialchars("Yay bullets!!\n\\u2022\n\\u2022\n\\u2022\n\\u2022\n\\u2022\n#yes", ENT_QUOTES); 

echo $raw; 

Ergebnis:

Yay bullets!! 
\u2022 
\u2022 
\u2022 
\u2022 
\u2022 
#yes 

Wenn ich versuche:

echo mb_convert_encoding($raw, 'UTF-8', 'HTML-ENTITIES'); 

Ergebnis: Wie oben. Keine Änderung.

Wenn ich versuche:

echo json_decode('"' . $raw . '"'); 

Ergebnis: Keine Ausgabe.

Wenn ich versuche:

echo mb_convert_encoding($raw, 'UTF-8', 'UTF-16BE'); 

Ergebnis: 奡 礠 扵 汬 整 猡 ℊ 屵 ㈰㈲ੜ 甲 〲 ㈊ 屵 ㈰㈲ੜ 甲 〲 ㈊ 屵 ㈰㈲ਣ 祥

würde ich schätze wirklich Hilfe, herauszufinden, wie man das richtig ausgibt.

Danke.

EDIT

Neben Kugeln, ich versagt auch Emojis Referenzcodes wie \\ud83d\\udc93 zu drucken. Referenz hier: http://emojipedia.org/face-with-tears-of-joy/

+0

überprüfen Wenn Sie es nur auf HTML anzuzeigen, warum HTML_ENTITIES Code nicht statt: '' • –

+0

https://stackoverflow.com/a/34404876/4248328 (ich glaube, das ist perfekt-on, aber Ich bin mir nicht sicher in Ihrem Fall) –

+0

@AlivetoDie echo echo "\ u $ raw"; 'ergibt sich das gleiche wie die ersten beiden Beispiele. – Jared

Antwort

1

können Sie so tun. Es funktioniert für beide. bitte

function decodeEmoticons($src) { 
    $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'); 
    return $result; 
} 
$r = "Yay bullets!!\n\\u2022\n\\u2022\n\\u2022\n\\u2022\n\\u2022\n#somany"; 
echo decodeEmoticons($r); 
$src = "\u263a\ud83d\ude00\ud83d\ude01\ud83d\ude02\ud83d\ude03"; 
echo decodeEmoticons($src); 
+0

Code funktioniert nur, wenn Plattform mbstring installiert haben: - https://StackOverflow.com/a/19728019/4248328 –

+0

Dies funktioniert gut für die Kugel Beispiel. Scheitert aber beim Versuch, Unicode-Emoji wie folgt zu konvertieren: \\ ud83d \\ udc93 \. Dies ist die Emoji-Referenz http://emojipedia.org/Beating-Heart/ – Jared

+1

Antwort ist Update bitte überprüfen. – ravi2432