Homepage Inspire-world | Forum
CGI/Perl Workshops Codeschnipsel für Reguläre Ausdrücke

 Inhaltsverzeichnis/Codeschnipsel für Reguläre Ausdrücke
Hinweis: Das Kapitel wird immer mal um neue Regexe erweitert!

1. Regexe für Zahlen und Datumsformate
2. Unerwünschte Zeichen filtern/ersetzen
3. Codeschnipsel für Foren und Gästebuch Codes

1. Regexe für Zahlen und Datumsformate
Oftmals kommt es vor das Datumseingaben geprüft werden müssen oder nach solchen Datumsangaben gesucht wird um etwas damit zu tun. Hier nun einige Beispiele dazu.

1. Auf ein Datumsformat (22.12.2002) hin prüfen/suchen

Beispielstring: $text ="Text mit Datum 22.12.2002 darin.";

# Sucht nach einem Datum im Format 22.12.2002
if ($text =~ m/\d\d.\d\d.\d\d\d\d/) {
print "Text mit Datum gefunden";
} else {
print "Text mit Datum nicht gefunden";
}
Andere Schreibweise:
# Sucht nach einem Datum im Format 22.12.2002
if ($text =~ m/\d{2}.\d{2}.\d{4}/) {
print "Text mit Datum gefunden";
} else {
print "Text mit Datum nicht gefunden";
}
Gefundenen Datum anzeigen:
# Sucht nach einem Datum im Format 22.12.2002
if ($text =~ s/(\d{2}.\d{2}.\d{4})/$1/) {
print "Text mit Datum $1 gefunden";
} else {
print "Text mit Datum  nicht gefunden";
}
Top
2. Unerwünschte Zeichen filtern/ersetzen
Ein falsches Zeichen, z.B. ein Datensatztrennzeichen - irrtümlicherweise in eine Text Datenbank geschrieben - kann einigen Ärger bereiten. Auch HTML oder Scriptcode kann einigen Schaden anrichten. Die passenden Gegenmittel will ich hier Beispielhaft auflisten.

1. Datenbanktrennzeichen filtern am Beispiel der Pipe |
$text =~ s/\|//g; komplett entfernen
$text =~ s/\|/¦/g; anderes/ähnliches Zeichen verwenden ¦
$text =~ s/\|/|/g; Zeichen in Zeichenwert umwandeln |


2. HTML und Scriptcode filtern
$text =~ s/<[^>]*?>//g; HTML filtern
$text =~ s/<!--(.|\n)*-->//g; SSI und Script Tags filtern
$text =~ s/"/&quot;/g; Anführungszeichen " zu &quot;
$text =~ s/\r//g; Returns (Wagenrücklauf) entfernen
$text =~ s/\n/<br>/g; Zeilenumbruch zu <br> umwandeln
Top
3. Codeschnipsel für Foren und Gästebuch Codes
Jeder kennt sie, klickbare Smileys oder anderen Spezialcode in Foren und Gästebüchern der dann vom Script in HTML umgesetzt wird. Einige der wichtigsten Anwendungsbeispiele sind hier aufgeführt.

1.1. Smileys zu IMG Tags umwandeln

$text =~ s/\:\)/<img src=\"$smilieurl\/smile.gif\" border=\"0\">/g;
$text =~ s/\:D/<img src=\"$smilieurl\/biggrin.gif\" border=\"0\">/g;
$text =~ s/\:cool:/<img src=\"$smilieurl\/cool.gif\" border=\"0\">/g;
Dies wandelt die Textcodes :), :D und :cool: in einen entsprechenden IMG Tag um. Dazu ist zu beachten das die Metazeichen maskiert werden müssen.

1.2. IMG Tags zu Smileycode umwandeln

Will man Text mit solchem Code editierten ist es nötig das dieser nun wieder in den normalen Smileycode zurückverwandelt wird.

$text =~ s/<img src=\"$smilieurl\/smile.gif\" border=\"0\">/:\)/gi;
$text =~ s/<img src=\"$smilieurl\/biggrin.gif\" border=\"0\">/:D/gi;
$text =~ s/<img src=\"$smilieurl\/cool.gif\" border=\"0\">/:cool:/gi;

2.1. Formatierungsanweisungen zu HTML umwandeln

Um bei eingaben in Formulare HTML zu filtern aber dennoch spezielle Formatierungen wie Textfarben, Listen, Links und dergl. zu ermöglichen werden ähnlich wie bei den Smileys spezielle Formatierungsanweisungen benutzt.

Text kursiv, fett und unterstichen:
$text =~ s/(\[i\])(.+?)(\[\/i\])/<i>$2<\/i>/isg;
$text =~ s/(\[b\])(.+?)(\[\/b\])/<b>$2<\/b>/isg;
$text =~ s/(\[u\])(.+?)(\[\/u\])/<u>$2<\/u>/isg;
Ausgehend von diesen Beispielen lassen sich leicht weitere Regexe herstellen zur Textformatierung.

2.2. HTML zu Formatierungsanweisungen umwandeln

Auch dieser Code muss beim editieren wieder zurückverwandelt werden.

Text kursiv, fett und unterstichen zurück zu Formatierungsanweisung:
$text =~ s/(<i>)(.+?)(<\/i>)/\[i\]$2\[\/i\]/isg;
$text =~ s/(<b>)(.+?)(<\/b>)/\[b\]$2\[\/b\]/isg;
$text =~ s/(<u>)(.+?)(<\/u>)/\[u\]$2\[\/u\]/isg;
Top

 Zum Inhaltsverzeichnis/Codeschnipsel für Reguläre Ausdrücke
Autor: Helmut Walter Homepage Inspire-world Fragen, Anregungen und Hinweise bitte in das Forum

Valid HTML 4.0! Valid CSS!