suntrop
Erfahrenes Mitglied
Hallo,
ich nutze folgende RegEx um einen Namen zu prüfen:
Jedoch scheint die RegEx in meinem PHP-Skript nicht zu funktionieren, da ich mit folgender Funktion einen „Fehler“ zurückerhalte, wenn ich z.B. ein é in das Wort tippe (é = Hex E9).
ergibt FALSE
Könnte es daran liegen, dass ich UTF-8 nutze? Habe mal gehört, PHP habe an einigen Stellen damit Schwierigkeiten.
Denn in einer RegEx-Test-Software wird é korrekt erkannt.
EDIT: Ich habe an keiner Stelle Merkwürdigkeiten mit UTF-8 gesehen.
EDIT2: Wenn ich in die RegEx direkt é hinzufüge, dann klappts wunderbar. Das muss also an dieser HEX-Schreibweise liegen.
Das sind Teile der Validator-Klasse von phpBuddy.eu.
ich nutze folgende RegEx um einen Namen zu prüfen:
Code:
/^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/
PHP:
if (preg_match( $this->muster_name, $eingabe ))
Könnte es daran liegen, dass ich UTF-8 nutze? Habe mal gehört, PHP habe an einigen Stellen damit Schwierigkeiten.
Denn in einer RegEx-Test-Software wird é korrekt erkannt.
EDIT: Ich habe an keiner Stelle Merkwürdigkeiten mit UTF-8 gesehen.
EDIT2: Wenn ich in die RegEx direkt é hinzufüge, dann klappts wunderbar. Das muss also an dieser HEX-Schreibweise liegen.
PHP:
final public function pruefeName( &$eingabe, $label, $min_laenge=999, $max_laenge=999 )
{
self::bereinigen( $eingabe );
self::injection( $eingabe, $label );
// Mindestlänge prüfen falls gesetzt
if ($min_laenge != 999)
{
if (strlen( $eingabe ) < $min_laenge)
{
$this->feld_error[$label] = self::FELD_ERROR_ZUKURZ;
return false;
}
}
// Maximallänge prüfen falls gesetzt
if ($max_laenge != 999)
{
if (strlen( $eingabe ) > $max_laenge)
{
$this->feld_error[$label] = self::FELD_ERROR_ZULANG;
return false;
}
}
// Auf Suchmuster prüfen
if (preg_match( $this->muster_name, $eingabe ))
{
return $eingabe;
}
else
{
$this->feld_error[$label] = self::FELD_ERROR_FORMAT;
return false;
}
}
PHP:
final private function bereinigen( &$eingabe )
{
if (get_magic_quotes_gpc()) { $eingabe = stripslashes( $eingabe ); }
$eingabe = trim( $eingabe );
$eingabe = preg_replace( $this->bereinigen_suchmuster, $this->bereinigen_ersatz, $eingabe );
$eingabe = wordwrap( $eingabe, 45, " ", true );
return $eingabe;
}
PHP:
final private function injection( &$eingabe, $label )
{
// Auf potentielle SQL Injections prüfen
foreach ($this->sql_injection as $injection)
{
if (preg_match( "/{$injection}/i", $eingabe ))
{
$this->feld_error[$label] = self::FELD_ERROR_INJECTION;
$eingabe = '';
}
}
// Auf potentielle Email Injections prüfen
foreach ($this->email_injection as $injection)
{
if (preg_match( "/{$injection}/i", $eingabe ))
{
$this->feld_error[$label] = self::FELD_ERROR_INJECTION;
$eingabe = '';
}
}
return $eingabe;
}
Das sind Teile der Validator-Klasse von phpBuddy.eu.
Zuletzt bearbeitet: