2016-03-31 14 views
-2

Wie ändert sich intval() bei der Verwendung von UTF-8-Multibyte-Strings im Gegensatz zu regulären ein Byte pro Zeichenketten? Ist es das Gleiche?PHP intval von Multibyte-Strings

+3

Was erwartet intval() von einer Multibyte-Zeichenfolge? z.B. aus '123αβγ'. Und warum denkst du, wäre das anders als "123abc"? –

+0

@MarkBaker sollte es 123 für beide geben, denke ich. – chilliefiber

+2

[Also warum versuchst du es nicht und siehe] (https://3v4l.org/eVK0t) –

Antwort

1

PHP unterscheidet Zeichenkodierungen intern nicht. Ein String ist einfach ein Array von Bytes. Wenn Sie eine UTF-8-Zeichenfolge an intval übergeben, sieht die Funktion nur die Bytes der codierten UTF-8-Zeichenfolge. Angesichts der Art der UTF-8-Codierung behandelt intval jedes Nicht-ASCII-Zeichen als Nicht-Ziffer. Es macht also keinen Unterschied, ob Sie eine ASCII-, Latin1- oder UTF-8-Zeichenfolge übergeben.

+0

Danke, das stimmt mit den Tests überein, die ich gemacht habe, aber ich wollte aufgrund einiger Echo-Tests nicht darauf wetten. – chilliefiber