![]() | HTMLWorld: Home | Hier werben | Impressum | |
|
|
|
|
|
|
|
PHP-Artikel: Reguläre Ausdrücke mit PHPvon Michael Stöckel Was genau sind reguläre Ausdrücke?
|
| Sonderzeichen | Bedeutung |
|---|---|
| ^ | Stringanfang wird geprüft |
| $ | Stringende wird überprüft |
| . | Beliebiges Zeichen |
| x? | Zeichen x kann vorkommen |
| x* | Zeichen x kommt öfters oder gar nicht vor |
| x+ | Zeichen x kommt einmal oder öfters vor |
| x{3} | Zeichen x kommt 3 mal vor |
| x{3,} | Zeichen x kommt 3 mal oder öfters vor |
| x{3,5} | Zeichen x kommt min. 3x und max. 5x vor |
| [1-10] | Eine Zahl zwischen 1 und 10 |
| (x|y) | Zeichen x oder Zeichen y kommen vor |
| [a-f] | Ein Kleinbuchstabe zwischen a und f |
| [A-F] | Ein Großbuchstabe zwischen a und f |
| [^a-f] | Kein Kleinbuchstabe zwischen a und f |
| [_A-Za-z] | Komplettes Alphabets sowie ein Unterstrich |
| [:space:] | Leerzeichen |
| () | Klammern für Ausdrücke aus mehreren Zeichen |
| \ | Maskierung von Sonderzeichen wie ? oder - (*) |
(*) Mit dem Backslash müssen Sonderzeichen wie ein Bindestrich, Anführungs- oder Fragezeichen maskiert werden, damit sie vom PHP-Interpreter nicht innerhalb des Quellcodes sondern als einfacher Text interpretiert werden.
Weiterhin bietet PHP die Möglichkeit - unabhängig von POSIX oder PERL-orientiert - bestimmte Klassen von Sonderzeichen zu definieren. Die Klassen ersetzen zum Teil die Zeichen aus der obigen Tabelle bzw. fasst sie weiter zusammen.
Die folgende Liste zeigt die zur Verfügung stehenden Klassen:
| Klasse | Bedeutung |
|---|---|
| alpha | Alle Groß- und Kleinbuchstaben |
| Jedes druckbare Zeichen inkl. Leerzeichen | |
| cntrl | Steuerzeichen |
| upper | Nur Großbuchstaben |
| lower | Nur Kleinbuchstaben |
| graph | Jedes druckbare Zeichen außer Leerzeichen |
| xdigit | Prüfung auf hexadezimale Werte |
Die POSIX-Variante bietet folgende Funktionen an:
Damit wird ein String mit Hilfe eines Regexp durchsucht und die betreffenden Stellen mit einem angegebenen Ersatz ersetzt.
Parameter:
Regexp-Suchmuster, Ersatz, ursprünglicher Textausdruck
Hinweis: Wenn Ziffern als Ersatz verwendet werden, müssen diese in Anführungszeichen angegeben werden.
Beispiel:
<?
$string = "Ein Mensch hat zwei Beine";
$replace = "3";
$string_new = ereg_replace("zwei", $replace, $string);
echo $string_new;
?>
Mit dieser Funktion wird standardmäßig ein String mit Hilfe der Definitionen eines regulären Ausdrucks durchsucht.
Parameter:
Regexp-Suchmuster, ursprünglicher Textausdruck, Array für Teilausdrücke (optional)
Hinweis: Wenn im Regexp Ausdrücke definiert sind, die mit einer geschweiften Klammer angegeben werden, ist mit Hilfe des optionalen Parameters der Zugriff auf diese Ausdrücke möglich. Der optionale Parameter wird automatisch als Array betrachtet.
Das erste Element im Array entspricht dabei dem ursprünglichen Ausdruck.
Beispiel:
<?
$date = "2007-09-12";
if( ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs) )
{
echo "$regs[3].$regs[2].$regs[1]<br>$regs[0]";
}
else
{
echo "Ungültiges Datumsformat: $date";
}
?>
Anmerkung: Der Inhalt von $regs[0] ist gleich dem Inhalt von $date.
Diese Funktion ist identisch zu ereg, nur dass hier auf Groß- und Kleinschreibung keine Rücksicht genommen wird.
Diese Funktion macht genau das gleiche wie ereg_replace, nur das hier auf die Unterscheidung von Groß- und Kleinschreibung verzichtet wird.
Diese Funktion im bezug auf reguläre Ausdrücke ein Sonderfall. Damit wird zwar auch ein bestimmter String mit Hilfe eines regulären Ausdrucks durchsucht. Gleichzeitig wird der String aber - falls das Zeichen im regulären Ausdruck gefunden wurde, aufgeteilt und die einzelnen Elemente in ein Array geschrieben.
Parameter:
Regulärer Ausdruck, String, Einschränkung
Hinweis: Die Einschränkung wird als Integer-Zahl angegeben und bewirkt, dass nur die betreffende Anzahl von Array-Elementen angelegt wird. Das letzte Array-Element enthält dann den Rest des eigentlichen Strings. Die Angabe einer Beschränkung ist optional.
Beispiel:
<?
$datum = "2007-09-12";
$date_segment = split("\-",$datum);
?>
Diese Funktion macht genau das gleiche wie split, nur das hier auf die Unterscheidung von Groß- und Kleinschreibung verzichtet wird.
Diese Funktion wandelt einen normalen String in eine Schreibweise, die zur Regexp-Definition verwendet werden kann, um.
Parameter:
String, der umgewandelt werden soll.
Beispiel:
<?
echo sql_regcase("Testausdruck");
?>
... ergibt in der Ausgabe [Tt][Ee][Ss][Tt][Aa][Uu][Ss][Dd][Rr][Uu][Cc][Kk].
Die Funktionen, die in dieser Alternative zur Verfügung stehen, sind im Normalfall schneller als die POSIX-Gegenstücke. Deshalb wird auch empfohlen, auf die "PERL-Funktionen" zurückzugreifen.
Diese Funktion stellt eine "normale" Suche mit Hilfe eines regulären Ausdrucks zur Verfügung.
Parameter:
Suchmuster, String, Array zum Zugriff auf die Treffer (optional)
Beispiel:
<?
$string = "Dies ist ein Testausdruck";
if( preg_match("/^Dies/", $string, $result) )
{
print_r($result);
}
?>
... ergibt Array ( [0] => Dies ) in der Ausgabe.
Diese Funktion bewirkt genau das gleiche wie preg_match. Der Unterschied ist, dass hier der komplette String durchsucht und nicht - wie bei preg_match - nach dem ersten erfolgreichen Suchvorgang abgebrochen wird.
Mit dieser Funktion kann ein Array nach einem bestimmten Suchmuster durchsucht werden. Die Elemente, die das Suchkriterium erfüllen, werden in ein neues Array geschrieben.
Parameter:
Suchmuster, Array zum Durchsuchen
Beispiel:
<?
$original = array("1","A","2","B","3");
$new = preg_grep("/(\d)/",$original);
print_r($new);
?>
... ergibt in der Ausgabe Array ( [0] => 1 [2] => 2 [4] => 3 ).
Damit wird ein Textausdruck nach einem Suchmuster durchsucht und die betreffenden Stellen durch einen anderen Ausdruck ersetzt.
Parameter:
Suchmuster, Ersatzausdruck, ursprünglicher Ausdruck, Limit für Ersetzungen, Anzahl der Ersetzungen
Allgemeines Schema:
preg_replace(/Suchmuster/Ersatz/, Textausdruck);
Hinweis: Die Angabe eines Limits für Ersetzungen und einer Variablen für die Anzahl der Ersetzungen ist optional. Wenn man beide Parameter mit angibt, legt man zum einen fest, wie oft die Ersetzungen maximal durchgeführt werden sollen und wie viele Ersetzungen tatsächlich stattgefunden haben.
Mit dieser Funktion wird ein String anhand eines Trennungszeichens aufgeteilt. Die einzelnen Elemente werden in ein Array geschrieben.
Parameter:
Suchmuster, String, maximale Anzahl der Elemente (optional)
Hinweis: Falls eine maximale Anzahl der Array-Elemente angegeben wird, werden auch nur entsprechend viele Elemente des Strings in das Array geschrieben.
Das Suchmuster muß zwingend zwischen zwei Schrägstrichen angegeben werden.
Beispiel: / Suchmuster /
Nach dem Suchmuster können bei Bedarf noch sog. Flags angegeben werden. Diese durch Kleinbuchstaben dargestellten Informationen präzisieren das Suchergebnis bzw. schränken es weiter ein.
Dabei können auch mehrere Suchmuster angegeben werden. Wenn dies benötigt wird, müssen die Buchstaben direkt hintereinander angegeben werden.
Die folgende Tabelle zeigt eine Liste der Flags:
| Flag | Bedeutung |
|---|---|
| c | Keine Rücksetzung der Suchposition bei Fehler |
| e | Bei Ersetzungen wird Ersatzzeichenkette als Perl-Code ausgeführt |
| g | Alle Vorkommen des Suchmusters finden |
| i | Groß- und Kleinschreibung ignorieren |
| m | Zeichenketten können aus mehreren Zeichen bestehen |
| o | Suchmuster nur einmal anwenden |
| s | Zeichenketten als eine einzige Zeile betrachten |
| x | Erweiterte Schreibweise verwenden |
In der POSIX-Methode musste man ein weiteres Array als Parameter mit angeben, wenn man auf Teilausdrücke im Suchmuster zugreifen will (Beispiel: Funktion ereg).
In der PER-Variante ist dies nicht notwendig. Hier stehen die Systemvariablen $1 ... $x automatisch zur Verfügung. Dabei realisiert $1 den Zugriff auf den ersten Teilausdruck und $x den Zugriff auf den x-ten Teilausdruck.
|
|
| « zurück | weiter » |
| Achtung: Seite ist nicht mehr gültig von Sir Quicksand | |
| Undefined variable - bitte um Hilfe von A235 | |
| Navigation Link soll ausgewählt bleiben von Maxxon | |
| Zeitliche Zugriffsbegrenzung auf eine Webseite von Krueger008 | |
| Suche in einer Spalte Datenbank mit Ausgabe als Link von xmen | |
| php frage von cyborg | |
| Welchen Befehl? von duesseltalker | |
| Mail vom Kontaktformular ist leer von promo | |
| Formular wird alphabetisch sortiert, statt logisch von gooddog | |
| Bekomme Validierung von Style.css.php nicht in den Griff !? von OneMoreMedia |
| Achtung: Seite ist nicht mehr gültig von Sir Quicksand | ||
| Undefined variable - bitte um Hilfe von A235 | ||
| Navigation Link soll ausgewählt bleiben von Maxxon | ||
| Zeitliche Zugriffsbegrenzung auf eine Webseite von Krueger008 | ||
| Suche in einer Spalte Datenbank mit Ausgabe als Link von xmen | ||
| php frage von cyborg | ||
| Welchen Befehl? von duesseltalker | ||
| Mail vom Kontaktformular ist leer von promo | ||
| Formular wird alphabetisch sortiert, statt logisch von gooddog | ||
| Bekomme Validierung von Style.css.php nicht in den Griff !? von OneMoreMedia | ||
| Seiteninhalt über ID's ändern ? von Alex... | ||
| Custom tailor made sites to suit your business requirement. von acumencs | ||
| Struktur von php-Dateien in wordpress von Iago | ||
| Extension:LDAP Authentication von sternkopf | ||
| Warnung bzw. Fehlermeldung von rallaf |
|
|
|
|
|
|
Startseite | Kontakt | Über uns | Impressum | Datenschutz | Was sind das für grüne Links? Unsere Angebote: HTML World | Downloads World | IT-News World | HSDPA World | Traveling World | Weather World | HSDPA | Internet Stick |