> > Und an Claudius direkt h�tt ich noch ne Frage wegen den > verschachtelten > Tags: > Wie soll das praktisch laufen von hinten her(selbes problem > meiner Frage > oben)
Von hinten her muss man halt bloss von uebereinstimmungen.count-1 nach 0 z�hlen... Also ohne for each.. �ber den submatch(0) bekommst Du den tagnamen und wenn du diese art tags nich willst, dann bekommst �ber �bereinstimmung.firstindex und .length die genaue position des geasmten tags, den du dann �ber string-bearbeitungsfunktionen - in diesem fall left und right - ausschneidest. > und dann findet er ja nur sagen wir das erste endtag(wobei > nur der Tagname > gefunden wird) Nein, es wird das gesamte endtag gefunden... Nur der erste submatch enth�lt nur den tagnamen. > woher weis er dann welches anfangstag zum gefundenen geh�rt > wenn es mehrere > gibt oder anfangstag garnicht vorhanden ist? Das ist alles unwichtig. Wenn ich z.B. keine table-tags zulassen will, dann schneid ich einfach alle table-tags raus, egal ob sie passend zueinander gesetzt sind oder nicht... �brigens solltest Du nat�rlich nicht definieren welche tags Du nicht haben willst, sondern nat�rlich nur die, die Du zulassen willst und alles andere rausl�schen... Hoffe jetzt ist alles klar, sonst frag einfach wieder nach, Claudius > > Dank und Gru� > > #### 1 ####: > Set Uebereinstimmungen = regAusdr.Execute(message) > If Uebereinstimmungen.count > 0 Then > For Each Uebereinstimmung in Uebereinstimmungen > f_tag=Uebereinstimmung.submatches(0) > text=Uebereinstimmung.submatches(1) > wert=Uebereinstimmung.value > start=Uebereinstimmung.firstindex > l_wert=Uebereinstimmung.length > l_text=l_wert-((len(f_tag)*2)+5) > Select Case f_tag > Case "b" > retstr=retstr & f_tag (bis) l_text 'zur kontrolle > End select > next > response.write retstr > else > response.write "Keine �bereinstimmungen" > endif > > #### 2 ####: > Set Uebereinstimmungen = regAusdr.Execute(message) > If Uebereinstimmungen.count > 0 Then > For x = 0 to Uebereinstimmungen.count > f_tag=Uebereinstimmungen(x).submatches(0) > (Fehler: ' Ung�ltiger Prozeduraufruf oder ung�ltiges Argument ' ) > text=Uebereinstimmungen(x).submatches(1) > wert=Uebereinstimmungen(x).value > start=Uebereinstimmungen(x).firstindex > l_wert=Uebereinstimmungen(x).length > l_text=l_wert-((len(f_tag)*2)+5) > > Select Case f_tag > Case "b" > retstr=retstr & f_tag (bis) l_text 'zur kontrolle > End select > next > response.write retstr > else > response.write "Keine �bereinstimmungen" > endif > > Gru� > ----- Original Message ----- > From: "Claudius Ceteras" <[EMAIL PROTECTED]> > To: "ActiveServerPages German" <[EMAIL PROTECTED]> > Sent: Wednesday, March 20, 2002 11:22 PM > Subject: [aspgerman] RE: AW: RE: AW: Format-Tags aus Textarea > > > > > > Hallo! > > > > > Ja wegen unerlaubten Sachen sollte das nicht direkt �ber HTML-Tags > > gehen das > > > da von vornherein nix anbrennt. > > > > Wenn Du eh pr�fst, vorzugsweise mit Regular Expressions, dann > > kannst Du > > auch "<" und ">" eingeben lassen. Dann sieht es auch aus > wie HTML und > > Copy und Paste w�re auch m�glich. > > Er hat wohl eckige Klammern genommen, weil das zig andere > Foren auch so > machen... Die nennen das dann Forum-Code... > > > Such einfach nach beliebigen HTML-Tags und filtere dann die falschen > > raus: > > > > Rxp.Pattern = "<([^>]+)>([^<]*)<\/\1>" > > > > Damit erh�ltst Du (theoretisch - nobody is perfect) alle > > HTML-Statements, wobei in dann $1 der Tagname und in $2 > alles zwischen > > "<$1>" und "</$1>" steht. > > Wenn ich das richtig sehe, entsteht hier das Problem, dass > geschachtelte > Tags nicht erkannt werden... > > <b> bold <i>italic + bold</i></b> > > In diesem Fall w�rde man nur die b-Tags finden und w�rde dann > das innere > wahrscheinlich mit htmlencode bearbeiten, was dann aber nicht zum > richtigen ergebnis f�hrt... > > Man k�nnte jetzt nat�rlich ds ganze rekursiv aufrufen, aber das ist > nicht n�tig und f�ngt z.B. auch nicht img-Tags ab, die man > oft vermeiden > will... > > Ich w�rde einfach nach sowas suchen: > > Rxp.Pattern = "<\/?([^ ]+)[^>]*>" > > Der Submatch enth�lt dann den tagnamen und man kann unerw�nschte > tagnamen als ganzes entfernen... > Da beim endtag auch nur der simple name zur�ckgegeben wird, werden die > end-tags gleich mitentfernt... > > Das entfernen geht �brigens nicht mit regexp in diesem fall, > weil man je > nach match entscheiden muss und replace nur auf alle matches angewandt > werden k�nnen. > D.h. man muss mit stringoperationen die entsprechenden tags > rausschneiden und damit man dabei die positionsanzeig in den matches > nicht ung�ltig macht, muss (!!!) man die matches von hinten nach vorne > abarbeiten.. > > Wenn man �brigens ganz genau sein will, erweitert man das Pattern noch > so, dass folgende Tags auch richtig erkannt werden > > <tag attr=">" > > > Gruss, > > Claudius > > > > > In VBScript kannst Du die Submatches einzeln lesen und dann die Tags > > rausschmei�en, die Du nicht haben willst. > > > > F�r die Ausgabe solltest Du dann auf jeden Fall HTMLEncode > verwenden, > > damit die Tags wieder editiert werden k�nnen. > > > > > | [aspgerman] als [EMAIL PROTECTED] subscribed > | http://www.aspgerman.com/archiv/aspgerman/ = Listenarchiv > | Sie k�nnen sich unter folgender URL an- und abmelden: > | http://www.aspgerman.com/aspgerman/listen/anmelden/aspgerman.asp > > > > > | [aspgerman] als [EMAIL PROTECTED] subscribed > | http://www.aspgerman.com/archiv/aspgerman/ = Listenarchiv > | Sie k�nnen sich unter folgender URL an- und abmelden: > | http://www.aspgerman.com/aspgerman/listen/anmelden/aspgerman.asp > | [aspgerman] als [email protected] subscribed | http://www.aspgerman.com/archiv/aspgerman/ = Listenarchiv | Sie k�nnen sich unter folgender URL an- und abmelden: | http://www.aspgerman.com/aspgerman/listen/anmelden/aspgerman.asp
