Ich baue eine API für eine mobile Anwendung und ich habe ein Problem mit dem Zählen der Länge einer Zeichenfolge mit Emojis. Mein Code:PHP - Länge der Zeichenfolge mit Emojis/spezielle Zeichen
$str = "✌️ @mention";
printf("strlen: %d" . PHP_EOL, strlen($str));
printf("mb_strlen UTF-8: %d" . PHP_EOL, mb_strlen($str, "UTF-8"));
printf("mb_strlen UTF-16: %d" . PHP_EOL, mb_strlen($str, "UTF-16"));
printf("iconv UTF-16: %d" . PHP_EOL, iconv_strlen(iconv("UTF-8", "UTF-16", $str)));
printf("iconv UTF-16: %d" . PHP_EOL, iconv_strlen(iconv("ISO-8859-1", "UTF-16", $str)));
die Antwort hierfür ist:
strlen: 27
mb_strlen UTF-8: 14
mb_strlen UTF-16: 13
iconv UTF-16: 14
iconv UTF-16: 27
aber ich 17 als Ergebnis erhalten sollte. Wir haben versucht, die String-Länge auf iOS, Android und Windows Phone, es ist 17 überall. iOS (Swift) -Snippet:
Wir müssen den NSString wegen einer Bibliothek verwenden. Ich brauche das, um die Start- und Endposition der "@mention" zu erhalten. Wenn die Zeichenfolge nur Text oder nur Emojis enthält, funktioniert es gut, wahrscheinlich gibt es ein Problem mit gemischten Inhalten.
Was mache ich falsch? Welche anderen Informationen kann ich Ihnen geben, um mich in die richtige Richtung zu bringen?
Danke!
versuchen mb_substr verwenden, können mb_str Länge eine Option sein –