Codeschnipsel für Reguläre Ausdrücke: Unterschied zwischen den Versionen

Aus crazylinux.de
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
Keine Bearbeitungszusammenfassung
Zeile 4: Zeile 4:
Oftmals kommt es vor das Datumseingaben geprüft werden müssen oder nach solchen Datumsangaben gesucht wird um etwas damit zu tun.
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.<br><br>
Hier nun einige Beispiele dazu.<br><br>
<b>1. Auf ein Datumsformat (22.12.2002) hin prüfen/suchen</b><br><br>
===Auf ein Datumsformat (22.12.2002) hin prüfen/suchen===
Beispielstring: <font class="pre">$text ="Text mit Datum 22.12.2002 darin.";</font><br><br>
Beispielstring: <font class="pre">$text ="Text mit Datum 22.12.2002 darin.";</font><br><br>


Zeile 37: Zeile 37:
Auch HTML oder Scriptcode kann einigen Schaden anrichten. Die passenden Gegenmittel will ich hier Beispielhaft auflisten.<br><br>
Auch HTML oder Scriptcode kann einigen Schaden anrichten. Die passenden Gegenmittel will ich hier Beispielhaft auflisten.<br><br>


<b>1. Datenbanktrennzeichen filtern am Beispiel der Pipe |</b><br>
===Datenbanktrennzeichen filtern am Beispiel der Pipe |===
<font class="pre">$text =~ s/\|//g;</font> komplett entfernen<br>
<font class="pre">$text =~ s/\|//g;</font> komplett entfernen<br>
<font class="pre">$text =~ s/\|/&amp;brvbar;/g;</font> anderes/ähnliches Zeichen verwenden ¦<br>
<font class="pre">$text =~ s/\|/&amp;brvbar;/g;</font> anderes/ähnliches Zeichen verwenden ¦<br>
Zeile 44: Zeile 44:


<hr class="hauptbg" noshade="noshade" size="1" width="99%">
<hr class="hauptbg" noshade="noshade" size="1" width="99%">
<b>2. HTML und Scriptcode filtern</b><br>
===HTML und Scriptcode filtern===


<font class="pre">$text =~ s/&lt;[^&gt;]*?&gt;//g;</font> HTML filtern<br>
<font class="pre">$text =~ s/&lt;[^&gt;]*?&gt;//g;</font> HTML filtern<br>
Zeile 58: Zeile 58:
<br><br>
<br><br>


<b>1.1. Smileys zu IMG Tags umwandeln</b><br><br>
===Smileys zu IMG Tags umwandeln===
<pre>$text =~ s/\:\)/&lt;img src=\"$smilieurl\/smile.gif\" border=\"0\"&gt;/g;
<pre>$text =~ s/\:\)/&lt;img src=\"$smilieurl\/smile.gif\" border=\"0\"&gt;/g;
$text =~ s/\:D/&lt;img src=\"$smilieurl\/biggrin.gif\" border=\"0\"&gt;/g;
$text =~ s/\:D/&lt;img src=\"$smilieurl\/biggrin.gif\" border=\"0\"&gt;/g;
$text =~ s/\:cool:/&lt;img src=\"$smilieurl\/cool.gif\" border=\"0\"&gt;/g;</pre>
$text =~ s/\:cool:/&lt;img src=\"$smilieurl\/cool.gif\" border=\"0\"&gt;/g;</pre>


Dies wandelt die Textcodes :), :D und :cool: in einen entsprechenden IMG Tag um. Dazu ist zu beachten das die <a href="../workshops/regex.html#D">Metazeichen</a> maskiert werden müssen.
Dies wandelt die Textcodes :), :D und :cool: in einen entsprechenden IMG Tag um. Dazu ist zu beachten das die [http://www.inspire-world.de/perlcgi/workshops/regex.html#D Metazeichen] maskiert werden müssen.
<br><br>
<br><br>
<b>1.2. IMG Tags zu Smileycode umwandeln</b><br><br>
===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.
Will man Text mit solchem Code editierten ist es nötig das dieser nun wieder in den normalen Smileycode zurückverwandelt wird.
Zeile 75: Zeile 75:
<hr class="hauptbg" noshade="noshade" size="1" width="99%">
<hr class="hauptbg" noshade="noshade" size="1" width="99%">


<b>2.1. Formatierungsanweisungen zu HTML umwandeln</b><br><br>
===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
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.<br><br>
ähnlich wie bei den Smileys spezielle Formatierungsanweisungen benutzt.<br><br>
Zeile 86: Zeile 86:
Ausgehend von diesen Beispielen lassen sich leicht weitere Regexe herstellen zur Textformatierung.<br><br>
Ausgehend von diesen Beispielen lassen sich leicht weitere Regexe herstellen zur Textformatierung.<br><br>


<b>2.2.  HTML zu Formatierungsanweisungen umwandeln</b><br><br>
===HTML zu Formatierungsanweisungen umwandeln===
Auch dieser Code muss beim editieren wieder zurückverwandelt werden.<br><br>
Auch dieser Code muss beim editieren wieder zurückverwandelt werden.<br><br>
<b>Text kursiv, fett und unterstichen zurück zu Formatierungsanweisung:</b>
<b>Text kursiv, fett und unterstichen zurück zu Formatierungsanweisung:</b>

Version vom 11. März 2006, 02:11 Uhr

von http://www.inspire-world.de/perlcgi/schnipsel/codeschnipselregexe.html

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.

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";
}


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.

Datenbanktrennzeichen filtern am Beispiel der Pipe |

$text =~ s/\|//g; komplett entfernen
$text =~ s/\|/&brvbar;/g; anderes/ähnliches Zeichen verwenden ¦

$text =~ s/\|/&#124;/g; Zeichen in Zeichenwert umwandeln |


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

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.

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.

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;

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.

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;

keywords: perl, regex, regular, expressions,replace,ersetzen,suchen