PHP-Einfach.de PHP lernen leicht gemacht

Navigation
» Startseite
» Newsübersicht
» Kontakt
» Impressum

Community
» Forum
» Gästebuch

Tutorial
» PHP Tutorial
» MySQL Tutorial
» PHP
» MySQL
» Codeschnipsel

Downloads
» Einführung
» Scripts
» Command Board

Sonstiges
» md5-Generator
» Generator
» Wissenswertes

PHP lernen


Dieses Projekt wird unterstützt von
Lichteffekte Shop

 
Partner:
PHP Forum
Mathe Nachhilfe
Suchmaschinenoptimierung

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

News
13.08 - » Spam im Gästebuch
Endlich Schluss mit dem Spam

08.12 - » Clanletter 2.0
Clanletter wurde komplett neu programmiert

01.09 - » Command Board 1.0 - 2.0
Das Command Board 1.0 Beta 2.0 ist erschienen


Mehr

Forum
» Entwickler Forum

» insert nach login

» Tabellenzelle zu groß







© PHP-Einfach.de 2003 - 2012