Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [RegEx] HTML Tags ohne Endtag (https://www.delphipraxis.net/76808-%5Bregex%5D-html-tags-ohne-endtag.html)

faux 10. Sep 2006 12:18


[RegEx] HTML Tags ohne Endtag
 
Hallo!

Ich hab schon wieder mal ne RegEx-Frage. Ich hab mir eine RegEx gebastelt, mit der ich HTML-Tags erkenne, die sowohl ein Anfangstag auch ein Eindtag haben:
Code:
<([A-Z][A-Z0-9]*+) ?[^>\n]*>(.*?)</\1>
Jetzt würde ich aber eigentlich das umgekehrte brauchen, also ein Anfangstag, aber kein Endtag.
Ich bekomme das nicht hin. :(
Habs auch schon mit Negativelookahead auf </\1> probiert, geht aber leider nicht.

Könnte mir mal jemand etwas helfen. ;)

Grüße
Faux

Olli 10. Sep 2006 12:53

Re: [RegEx] HTML Tags ohne Endtag
 
Ich halte das nicht für machbar, weil die Tags ja beliebig tief geschachtelt sein können. Auch könntest du fälschlicherweise sowas nicht matchen:

Code:
<pre>ckbnwecdejkb[i]xjklwndqj</pre>[/i]
weil dort ja ein Endtag existiert, es ist zwar falsch geschachtelt, aber so komplexe Ausdrücke dürftest du nicht in eine Regex packen können ... mußt du wohl oder übel noch drumherum was scripten um die Tag-Verschachtelungsebenen aufzuspüren und zu testen ...

omata 10. Sep 2006 12:55

Re: [RegEx] HTML Tags ohne Endtag
 
Hallo faux,

das wird wohl mit einem einfachen regulären Ausdruck nicht gehen. Tags können ja auch verschachtel sein...

Code:
 <div>
   <div>
 </div>
Was willst du eigentlich genau machen?

Gruss
Thorsten

faux 10. Sep 2006 14:09

Re: [RegEx] HTML Tags ohne Endtag
 
Zitat:

Zitat von omata
Was willst du eigentlich genau machen?

Ich habe in einem phpBB Forum im Profil ein Feld mit benutzerdefiniertem Text gemacht, wo jeder über sich selbst schreiben kann. Da das ganze aber ziemlich lang werden kann, habe ich eine Funktion zum Ein- und Ausklappen gemacht. Wenn jetzt jedoch ein BBCode-Tag über die Einklappstelle (die ca. bei Zeichen 1000 liegt) hinausgeht, hat das zur Folge, dass dann der Folgetext ev. Fehler enthalten könnte, da es eben kein Endtag gibt.

Bsp: Das ist ein Text mit einem BBCode, [b]welches abgeschnitten[/b] wird.
Der kursive Text ist dann abgeschnitten und es gibt kein [/b] Tag.

Naja, dann werde ich in der "Vorschau" (also im eingeklappten Zustand) alle BBCode deaktivieren.

Danke euch.

Grüße
Faux


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz