[GastForen Programmierung/Entwicklung PHP und MySQL preg_match Suchmuster definieren

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

preg_match Suchmuster definieren

flobaer
Beiträge gesamt: 317

30. Aug 2007, 13:07
Beitrag # 1 von 7
Bewertung:
(10253 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

vielleicht eine blöde Frage, aber ich habe bisher dazu nichts vernünftiges gefunden...

Wie definiere ich das Suchmuster für preg_match() ?
Ich habe gesehen, dass man irgendwas in der Form [a-z] o.ä. verwenden kann, aber wie? Wie suche ich z.B nach den Buchstaben A-Z in Groß- und Kleinschreibung, Ziffern und einzelnen Zeichen wie - oder _?

Ich krieg das einfach nicht auf die Reihe.

Leicht verschämte Grüße,
Florian
X

preg_match Suchmuster definieren

Bitfilme
Beiträge gesamt: 264

30. Aug 2007, 14:07
Beitrag # 2 von 7
Beitrag ID: #310383
Bewertung:
(10245 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo flobaer

Mein Du so wie das?
preg_match("/^[A-Za-z0-9\ü\è\ö\é\ä\à\Ä\Ö\Ü\-\_\?]*$/", $test)


als Antwort auf: [#310369]

preg_match Suchmuster definieren

flobaer
Beiträge gesamt: 317

30. Aug 2007, 14:29
Beitrag # 3 von 7
Beitrag ID: #310390
Bewertung:
(10236 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Bitfilme,

im Prinzip meinte ich sowas, ja. Ich würde nur gerne verstehen.
Ich habe schon soviel kapiert, dass ich einen Slash an den Anfang und ans Ende setzen muss, ein ^ vor und ein $ hinter die Zeichenkette, damit der String von vorne bis hinten durchsucht wird. Richtig soweit?
Ich habe jetzt folgendes:

preg_match('/^[A-Za-z0-9_-\]+$/', $string)

Damit erzeugen alles Strings, die andere Zeichen als Buchstaben von a-z, Ziffern oder ein Minus oder einen Unterstrich enthalten einen Fehler. Ein Teilerfolg sozusagen.

Ich scheitere jetzt daran einen Punkt noch zuzulassen, da der wohl ein spezielles Zeichen ist, oder?

Wenn ich meinen Aufruf mit deinem vergleiche, frage ich mich, was der Unterschied zwischen +$ und *$ ist und was die Backslashes vor den Umlauten etc. bewirken.

Kannst du mich da aufklären? Vielleicht gibt es auch eine Seite, die das so erklärt, dass ich es verstehe?

Viele Grüße,
Florian


als Antwort auf: [#310383]

preg_match Suchmuster definieren

Bitfilme
Beiträge gesamt: 264

30. Aug 2007, 15:13
Beitrag # 4 von 7
Beitrag ID: #310398
Bewertung:
(10231 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Der backslash ist für die Sonderzeichen. [a-z\?\!\.]

Dies prüft, ob nur diese Zeichen enhalten sind.

Code
$test = "Test?"; 
if (preg_match("/^[A-Za-z0-9\ü\è\ö\é\ä\à\Ä\Ö\Ü\-\_]*$/", $test)){
echo 'OK';
}
else {
echo 'Fehler';
}

// Ausgabe Fehler


Der * stellt die Zeichenlänge dar. Den kann auch durch {mindestlänge, maximumlänge} ausgetauscht werden.


als Antwort auf: [#310390]

preg_match Suchmuster definieren

flobaer
Beiträge gesamt: 317

30. Aug 2007, 15:19
Beitrag # 5 von 7
Beitrag ID: #310400
Bewertung:
(10228 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ah OK, jetzt funktioniert es. Gibt es eine Möglichkeit bei einem Fehler die Zeichen auszugeben, die "verboten" sind?

Viele Grüße,
Florian


als Antwort auf: [#310398]

preg_match Suchmuster definieren

Bitfilme
Beiträge gesamt: 264

30. Aug 2007, 15:34
Beitrag # 6 von 7
Beitrag ID: #310404
Bewertung:
(10225 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen


als Antwort auf: [#310400]
(Dieser Beitrag wurde von Pozor am 30. Aug 2007, 17:25 geändert)

preg_match Suchmuster definieren

flobaer
Beiträge gesamt: 317

30. Aug 2007, 17:26
Beitrag # 7 von 7
Beitrag ID: #310426
Bewertung:
(10206 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Auch wenn ich das System noch immer nicht ganz verstanden haben, habe ich jetzt doch das was ich wollte:
Code
<?php 
preg_match_all('/[^A-Za-z0-9\_\-\.\+]/', $string, $fehler, PREG_OFFSET_CAPTURE);
if (count($fehler) == 0)
echo("Alles ok");
else
{
$verbotene_zeichen=array();
foreach ($fehler[0] as $falsch)
{
if($falsch[0]==" ") $verbotene_zeichen[]="Leerzeichen";
else $verbotene_zeichen[]=$falsch[0];
}
$verbotene_zeichen=array_unique($verbotene_zeichen);
natsort($verbotene_zeichen);
echo("Der String enth&auml;lt folgende unzul&auml;ssige Zeichen: ".implode("\t",$verbotene_zeichen));
}
?>


Danke Bitfilme noch mal für deine Hilfe.

Viele Grüße,
Florian


als Antwort auf: [#310404]
X