|
|
|
Reguläre Ausdrücke(RegEx) Tutorial
Zurück zur Übersicht Dieses Tutorial erklärt euch den Umgang mit preg_match
Hattet ihr auch schon das Problem, dass ihr einen bestimmten logischen Textteil aus einem großen
Text herausfiltern musstet und ggf. ersetzten und versteht die logik von preg_match / preg_replace / usw. nicht?
Ich erkläre es euch ganz einfach.
Die Zeichen
| Zitat: |
. entspricht einem beliebigen Zeichen ( also Buchstaben,Zahlen,sonderzeichen,bindestriche,usw.).
+ entspricht anzahl >= 1
.+ entspricht mehreren beliebigen Zeichen
* entspricht anzahl >= 0
.* entspricht kein oder mehrere beliebigen Zeichen
? entspricht einem Zeichen
.? entspricht kein oder ein beliebiges Zeichen
| entspricht der OR bzw. ODER Verknüpfung
^ entspricht zweierlei: einmal der NOT bzw. NICHT Verknüpfung(aber nur in der [] klammer) und anderesmal, dass das folgende zeichen am anfang stehen muss.
alle oben genannten zeichen müssen als echte zeichen mit dem \ maskiert werden, also z.B. \. entspricht dann dem .
\w entspricht einem Buchstabe
\w+ entsprcht mehreren (oder einem) Buchstaben
\d entspricht einer Zahl
\d+ entspricht mehreren (oder einer) Zahlen
() entspricht einer Gruppe, wird also gespeichert. Die Erste Gruppe kann nachher bei preg_replace im replacement als $1 angegeben werden, die zweite als $2 usw.
(\w+) entspricht mehreren gespeicherten Buchstaben
[] entspricht einem Bereich
[a-z] entspricht den kleinen Buchstaben a bis z
[A-Z] entspricht den grossen Buchstaben A bis Z
/ oder # müssen an anfang und ende!
|
Alle Zeichen, die hier nicht aufgeführt sind, kann man einfach so in den pattern reinschreiben
Beispiele
Gültigkeit einer Email
| PHP |
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
<?php
$email = "test@testserver.endung";
if(preg_match("/([0-9a-zA-Z])@(\w+)\.(\w+)/",$email)){ //gesucht wird nach beliebig vielen zeichen von 0 bis 9 a bis z und A-Z denen ein @ folgt.
// Diesem @ folgt eine buchstabenkette mit punkt und noch einer buchstabenkette
echo $email;
}else {
echo "nicht gültig";
}
?>
|
|
AUSGABE: test@testserver.endung
BBCodes
a)
| PHP |
1:
2:
3:
4:
5:
6:
7:
|
<?php
$text = "[b ]fetter Text[/b]";//ohne das leerzeichen bei [b ]
$replace = '<b>$1</b>';//bzw
//$replace = '<p style="font-weight:bold;">$1</p>';
$text = preg_replace("/\[b\](.*)\[\/b\]/",$replace,$text);
echo $text;
?>
|
|
AUSGABE: fetter Text
b)
| PHP |
1:
2:
3:
4:
5:
6:
|
<?php
$text = "[url =http://www.google.de]Link[/url]";//ohne das leerzeichen bei [url ]
$replace = '<a href="$1">$2</a>';// hier ist jetzt das leerlassen von <a target="_blank" href=" "> nicht bedacht
$text = preg_replace("/\[url=(.*)\](.*)\[\/url\]/",$replace,$text);
echo $text;
?>
|
|
AUSGABE: [url=http://www.google.de]Link
ACHTUNG!: SÄMTLICHE BEISPIELE SOLLTEN noch gegen Design-Zerstörer geschützt werden...
http://www.regex-tester.de/regex_glossar.html
Erweiterungen folgen bei Bedarf noch
Danke für eure Aufmerksamkeit, und bei Fragen einfach melden :P
Posten in anderen Foren oder auf der eigenen Website sind okay, solange ich genannt werde.
Änderungen unerwünscht :D
EDIT1: tipps von B.C. implementiert :bier:
Kommentare
Zurück zur Übersicht
Autor spooooongq
|
|
|
|