Verwenden mb_strlen
Gibt die Anzahl der Zeichen in String str mit Zeichencodierung (die zweiten Parameter) Codierung. Ein Multi-Byte-Zeichen als 1 gezählt
Da Ihr 3 Zeichen sind alle Multi-Byte, Sie erhalten 6 mit strlen
zurückgegeben, aber das gibt 3
wie erwartet.
echo mb_strlen($string,'utf-8');
Fiddle
Hinweis
Es ist wichtig, nicht die Kraft dieser Methode und alle ähnlichen Alternativen zu unterschätzen. Zum Beispiel könnte man geneigt sein, ok zu sagen, wenn die Zeichen Multibyte sind, dann einfach die Länge mit strlen
erhalten und sie durch 2 teilen, aber das funktioniert nur, wenn alle Zeichen deines Strings Multibyte sind und sogar ein Punkt .
ungültig wird die Zählung. Zum Beispiel dieses
echo mb_strlen('علی.','utf-8');
Returns 4
, die korrekt ist. Also nimmt diese Funktion nicht nur die ganze Länge und teilt sie durch 2, sie zählt 1 für jedes Multi-Byte-Zeichen und 1 für jedes Single-Byte-Zeichen.
Hinweis 2:
Es sieht aus wie Sie nicht verwenden diese Methode entschieden, weil mbstring
Erweiterung standardmäßig nicht für alte PHP-Versionen aktiviert ist und Sie könnten es nicht zu versuchen, damit :) obwohl Für zukünftige Leser haben entschieden Es ist nicht schwierig und es ist ratsam, es zu aktivieren, wenn Sie mit Multi-Byte-Zeichen zu tun haben, da es nicht nur die Länge ist, mit der Sie möglicherweise umgehen müssen. See Manual
Verwenden Sie ['mb_strlen()'] (http://php.net/mb-strlen) (von der MBString-Erweiterung). – BlitZ
Ihre Ausgabe ist 6, da 'strlen()' Bytes ohne Berücksichtigung der Kodierung zählt. In Ihrer Kodierung (wahrscheinlich UTF8) zählt jedes Zeichen als 2 Bytes. Also ist die Ausgabe für 3 Zeichen = 6 ('3 Zeichen * 2 Byte'). – BlitZ
Ich lief 'var_dump (mb_strlen ('علی'));' ich selbst, aber die Ausgabe ist immer noch 6? – bhargavg