Thread HTML-Code aus Zeichenkette entfernen (12 answers)
Opened by Gast at 2004-08-29 21:50

Crian
 2004-08-30 13:45
#3603 #3603
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
[quote=MatthiasR,29.08.2004, 20:31]Solche sachen kotzen mich eben bei der Programmierung (egal welche Sprache) an. Theorie und Praxis sind grundverschieden ;-)[/quote]
Nein, wo/was denn?


?! ist negative look ahead (null zeichen)
Man schaut halt, ob das was dort angegeben wird nicht folgt. Gefangen wird nichts.

Code: (dl )
s~<(?!b>|i>|/b>|/i>)~&lt;~gi


bedeutet:

Jede öffnende spitze Klammer, auf die weder b> noch i> noch /b> noch /i> folgt, wird durch &lt; ersetzt.

Zu

Code: (dl )
s~<([^bi]|/[^bi]|/?[^/>]{2,}/?)>~&lt;$1&gt;~gi


Man sucht nach einer spitzen öffnenden Klammer, auf die ein Zeichen folgt, das kein b und kein i ist oder auf die ein Slash und ein Zeichen folgt, das kein b und kein i ist oder auf die ein optionales Slash und mindestens zwei Zeichen, die weder Slash noch schließende spitze Klammer sind gefolgt von einem optionalen Slash folgt.

Code: (dl )
[^bi]|/[^bi]


liesse sich auch zu

Code: (dl )
/?[^bi]


zusammenfassen.

Damit hätte man dann zum Beispiel:

Code: (dl )
s~<(/?(?:[^bi]|[^/>]{2,}/?))>~&lt;$1&gt;~gi


Der optionale Slash am Ende bezieht sich wohl auf sowas wie <br />.

Wenn man sich jetzt noch den Gefallen tut mit x zu arbeiten wirds auch übersichtlicher:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
s~<
  (
   /?
   (?:
     [^bi]          |
     [^/>]{2,}/?
   )
  )
  >
 ~&lt;$1&gt;~gix


Ach ja und bevor Du fragst ;) (?: ... ) ist eine gruppierende aber nicht speichernde Klammer. Ohne ?: wäre der Inhalt nochmal zusätzlich in $2 abgelegt worden, was unnötig Platz und Zeit kostet.\n\n

<!--EDIT|Crian|1093860415-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread HTML-Code aus Zeichenkette entfernen