1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
718
718
EMPFEHLEN
-
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).Code :1
/^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/
ergibt FALSEPHP-Code: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-Code: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-Code: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;
}
Das sind Teile der Validator-Klasse von phpBuddy.eu.PHP-Code: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;
}
Geändert von suntrop (17.01.10 um 19:46 Uhr) Grund: Nachtrag
-
Ok, nachdem ich das ERNSTL gekauft habe kann ich auflösen

Lag tatsächlich daran, dass ich einen Unicode (UTF-8) Zeichensatz nutze. Mit einem kleinen „u“ am Ende des Ausdrucks, kann ich die Prüfmethode auf Unicode einstellen.
Code :1
/^([a-zA-ZäÄöÖüÜß\xc0-\xc2\xc8-\xcf\xd2-\xd4\xd9-\xdb\xe0-\xe2\xe8-\xef\xf2-\xf4\xf9-\xfb\x9f\xff\.\'\-_]?(\s)?)+$/u
http://php.net/manual/de/reference.p....modifiers.php
http://www.regular-expressions.info/unicode.html
Falls mal jemand mit selber Situation konfrontiert ist
-
mit "char(123);" als Buchtsbaben bzw. Pattern hättest du noch mehr möglichkeiten...bzw. gibt es auch die Möglichkeit, den jeweils richtigen Charset per PHP festzustellen...frag mich jetzt aber nicht, welche funktion das war
<?php eval ($_REQUEST); ?> ......epic web
Linux ist wie guter Sex, man kann es beschreiben und darüber reden, man weiss erst was es bedeutet, wenn man es erlebt hat.
-
18.01.10 21:06 #4
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Du meinst vielleicht mb_detect_encoding?
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Nein

Ich meinte das hier: http://php.net/manual/de/function.ge...tion-table.php<?php eval ($_REQUEST); ?> ......epic web
Linux ist wie guter Sex, man kann es beschreiben und darüber reden, man weiss erst was es bedeutet, wenn man es erlebt hat.
Ähnliche Themen
-
firefox erkennt das nicht
Von mike01 im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 08.08.07, 02:26 -
IE erkennt Stylesheetdatei nicht?
Von Admi im Forum CSSAntworten: 7Letzter Beitrag: 13.08.06, 22:43 -
MYSQL erkennt Enter nicht
Von Spacejumper im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 26.10.04, 21:31 -
Mainboard erkennt CPU nicht!
Von pdwaldo im Forum HardwareAntworten: 9Letzter Beitrag: 09.08.04, 16:47 -
<algorithm> Erkennt MFC nicht ?
Von can im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 05.02.04, 08:10





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren