preg_match() und UTF-8?

unrealzero_php

Erfahrenes Mitglied
Hallo zusammen

Wie ist es möglich, Werte die über ein Formular übermittelt (UTF-8) wurden mittels preg_match() zu prüfen?

Bis anhin hatte ich alle Sonderzeichen angegeben und das ganze mit utf8_encode() codiert.

Nun möchte ich aber nicht alle Sonderzeichen für Französisch, Deutsch usw. angeben müssen.

Gibt es eine Möglichkeit, dies mit einem "globalen" Parameter alle in UTF-8 vorkommenden Zeichen zu akzeptieren?

Hier mein bisheriger Code:

Code:
$pattern = utf8_encode('/^[[:alnum:][:space:][:punct:]äöüÄÖÜÇçñâôàéè³²]*$/');
                 	
if (!preg_match($pattern, $this->mPostValue))
{
    return false;
}
 
Hallo,

wenn du deinen Quelltext als UTF-8 verfasst, dann brauchst du die utf8_encode() nicht mehr.

Ausserdem sind alle Zeichen, die in ASCII / ISO-8859-15 vorkommen, auch in UTF verfügbar. Wenn du alle UTF-8 Zeichen zulassen würdest, dann könntest auch gleich folgendes schreiben ;)

PHP:
if(false) {
  return false;
}

Bevor ich hier eine Whitelist anlege würde ich mich fragen, für was du die Daten filtern willst. Wenn du diese in eine Datenbank speichern willst, dann wäre ein einfaches mysql_real_escape_string() einfacher. Bei der Ausgabe kannst ja dann mit html_entities() arbeiten.

Gruß
BK
 
Wie ist es möglich, Werte die über ein Formular übermittelt (UTF-8) wurden mittels preg_match() zu prüfen?

Also die erste Frage, die sich mir stellt: was willst du prüfen? Auch die Datenbank kann utf8 und für HTML-Tags eignet sich htmlentities() bestimmt auch besser, als ein RegEx. Also - was ist Ziel dieser Prüfung?
 
Zurück