2010-09-04 10 views
5

Beim Zählen der Länge einer UTF-8-Zeichenfolge in PHP verwende ich mb-strlen().mb_strlen() ist es genug?

Zum Beispiel:

if (mb_strlen($name, 'UTF-8') < 3) { 
    $error .= 'Name is required. Minimum of 3 characters required'; 
} 

Da die Textfelder eine beliebige Sprache (mehrsprachiger) annehmen können, ich möchte sicherstellen, dass PHP richtig mutltilanguage UTF-8-Zeichen zählen.

Ist das ausreichend oder muss ich andere Methoden verwenden? Ich bin besorgt, dass PHP aus irgendeinem Grund falsch liegen könnte, oder vielleicht bin ich nur skeptisch, aber ich möchte nicht, dass Leute wichtige Validierungen umgehen, weil PHP es falsch versteht.

Antwort

18

Correct

if (mb_strlen($name, 'UTF-8') < 3) is sufficient enough 

stellen Sie sicher, Header korrekt

HTTP-header (Content-Type: text/html; charset=UTF-8) 

Sie auch alternative aus irgendeinem Grund

strlen(utf8_decode($string)) 

UTF-8 to Code Point Array Converter in PHP

überprüfen
+0

Dank JapanPro. Mein HTTP-Header ist in Ordnung, danke. Wird dies überprüfen, Link. Also ich denke, mb_strlen() kann dann als mein HTTP-Header vertraut werden, wie Sie oben gesagt haben? Danke! – PHPLOVER

1

Neben Antwort des JapanPro:
Ihre HTML kann haben:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

statt einer impliziten Kopf Erklärung:

HTTP-header (Content-Type: text/html; charset=UTF-8)