Heim >Backend-Entwicklung >PHP-Tutorial >Regulärer UTF-8-Ausdruck für chinesische Zeichen
Originallink: http://blog.csdn.net/wide288/article/details/30066639
$str = "Programming";
// if(!preg_match("/^[ x{4e00}-x{9fa5}A-Za-z0-9_] $/u",$str)) //UTF-8 chinesischer alphanumerischer regulärer Unterstreichungsausdruck
if(!preg_match("/^[ x{ 4e00}-x{9fa5}] $/u",$str)) //UTF-8 chinesisches Zeichen alphanumerisch unterstrichen regulärer Ausdruck
{
echo "Was Sie eingegeben haben [". $str.“] Enthält unzulässige Zeichen legal, bestanden!";
}
---------------------- -
UTF-8-Übereinstimmung:
In Javascript ist es sehr einfach festzustellen, ob eine Zeichenfolge chinesisch ist. Zum Beispiel: var str = "php programming"; if (/^[u4e00-u9fa5] $/.test(str)) { Alert("Der String ist alles auf Chinesisch" } else{ Alert("Der String ist not All in Chinese"); }In PHP wird x zur Darstellung hexadezimaler Daten verwendet. Daher wird es in den folgenden Code umgewandelt: $str = "php programming"; if (preg_match("/^[x4e00-x9fa5] $/",$str)) { print("Dieser String ist alles auf Chinesisch") ; } else { print("Die Zeichenfolge ist nicht vollständig auf Chinesisch"); Es scheint, dass kein Fehler gemeldet wird und das Beurteilungsergebnis korrekt ist. Wenn jedoch $str durch das Wort „Programmierung“ ersetzt wird, bleibt das Ergebnis bestehen Zeigt „Die Zeichenfolge ist nicht vollständig auf Chinesisch“ an, scheint dieses Urteil immer noch nicht genau genug zu sein.
Wichtig: Nachdem ich „Kompetent in regulären Ausdrücken“ überprüft hatte, stellte ich fest, dass ich für [x4e00-x9fa5] selbst eine erweiterte Erklärung erstellt habe. Im regulären Ausdruck von PHP ist [x4e00-x9fa5] tatsächlich das Zeichen „And“. Das Konzept der Zeichengruppe x{hex} drückt eine Hexadezimalzahl aus. Es ist zu beachten, dass Hex 1-2 Ziffern oder 4 Ziffern lang sein kann. Wenn es sich jedoch um 4 Ziffern handelt, müssen geschweifte Klammern hinzugefügt werden Wenn es gleichzeitig ein Hexadezimalwert ist, der größer als x{FF} ist, muss es mit dem u-Modifikator verwendet werden, andernfalls tritt ein illegaler Fehler auf.
Online finden Sie nur reguläre Regeln zum Abgleichen von Zeichen voller Breite: ^[x80 -xff]*^/ , hier Sie können Chinesisch ohne das Hinzufügen von Klammern [u4e00-u9fa5] abgleichen, PHP unterstützt dies jedoch nicht. Da es sich jedoch um hexadezimale Daten handelt, die durch x dargestellt werden, warum unterscheidet es sich von dem in x4e00-x9fa5 bereitgestellten Bereich? js? Also habe ich zum folgenden Code gewechselt und festgestellt, dass er wirklich korrekt ist: $str = "php programming" if (preg_match("/^[x{4e00}-x{9fa5}] $/u",$str) ) { print("Diese Zeichenfolge ist ausschließlich chinesisch"); } else { print("Diese Zeichenfolge ist nicht ausschließlich chinesisch"); Ich weiß, wie man reguläre Ausdrücke verwendet, um chinesische Zeichen unter UTF-8-Kodierung in PHP abzugleichen endgültiger korrekter Ausdruck - /^[x{4e00}-x{9fa5}] $/u, unter Bezugnahme auf den obigen Artikel habe ich den folgenden Testcode geschrieben (kopieren Sie den folgenden Code und speichern Sie ihn als .php-Datei)
GBK:
preg_match("/^[".chr(0xa1). "-".chr(0xff)."A-Za- z0-9_] $/",$str); //GB2312 Chinesische Zeichen alphanumerisch unterstreichen regulärer Ausdruck
Das Obige hat reguläre UTF-8-Zeichen eingeführt, einschließlich einiger Aspekte davon. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.