PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : HTML-"Beautifier"


Binaermensch
2004-02-13, 15:21:13
moin

Ich such nen PHP-Algorithmus, der mir nen HTML-String in lesbare Form bringt.
der z.B. aus der Zeichenkette
<ul><li>bla</li><li>blub</li><li>und bleh</li></ul>
<ul>
<li>bla</li>
<li>blub</li>
<li>und bleh</li>
</ul>macht.

Spontan bin ich auf ircg-html-encode und tidy-get-html gestoßen, jedoch sind beide Funktionen (zumindest für mich) zu ungenau beschrieben.

http://at.php.net/manual/de/function.ircg-html-encode.php
http://at.php.net/manual/de/function.tidy-get-html.php

Endorphine
2004-02-13, 15:34:14
Klaro, Tidy (http://www.w3.org/People/Raggett/tidy/), was sonst? =)

Binaermensch
2004-02-13, 16:41:33
scheint ziemlich genau das zu sein was suche, nur bräuchte ich davon ne PHP-Version :\

Sphinx
2004-02-14, 14:31:07
PhpEdit hat ein eingebautes Modul Code-"Beautifier" für so alle Sprachen...

http://www.phpedit.net/

Binaermensch
2004-02-14, 16:00:03
sicher dass es das auch in Form eines PHP-Skriptes gibt?

lt. webseite gibts es nur als
- GUI-version
- commandline-version, und als
- plugin für phpEDIT.


edit: sry, ich seh grad dass ich mich im ersten Post recht unklar ausgedrückt hab.
=> Ich brauch den algorithmus in Form eines PHP-Skriptes!

Das ding muss mir on-the-fly nen HTML-string "beautifizieren", der dann anschließend in nem Formularfeld ausgegeben wird..

Marcel
2004-02-17, 17:29:30
Dafür hat PHP die Funktion strip_tags:

<?
$string = strip_tags($string, '<a><b><i><u>');
?>

Binaermensch
2004-02-18, 23:03:36
schon langsam wirds nervig..


lies dir bitte den ersten post nochmal durch.
strip_tags "beautifiziert" kode nicht, sie löscht lediglich alle tags raus.

Marcel
2004-02-18, 23:37:44
Ah, OK, 'tschuldigung...
Dann kann ich Dir allersings leider nicht weiterhelfen.

Grob gesagt müsstest Du den String, der den HTML-Code enthält, durchgehen, Zeichen für Zeichen.
Jedes Zeichen übernimmst Du in eine Zielzeichenkette.
Bei jedem "<" anfangen, eine andere Variable zu füllen; bei jedem ">" gucken, was da drin steht, und danach gegebenenfalls eine der beiden - oder beide - Aktionen durchführen:
eine Variable, die die Einrücktiefe enthält, um 1 erhöhen (wie bei "<ul>") oder um 1 verringern (wie bei "</ul>")
Zielzeichenkette um einen Zeilenvorschub ("\n", IIRC) und um eine der Einrücktiefe entsprechende Anzahl von Leerzeichen auffüllen
Das Ganze eben in einer Schleife von 0 bis zur Länge der Eingabezeichenkette - 1.

MadMan2k
2004-02-19, 00:09:32
wenn du wirklich vorhast sowas selbst zu schreiben, dann würde ich aber Regexe (http://tut.php-q.net/regex.html) nehmen...

Marcel
2004-02-19, 00:24:33
Original geschrieben von MadMan2k
wenn du wirklich vorhast sowas selbst zu schreiben, dann würde ich aber Regexe (http://tut.php-q.net/regex.html) nehmen...

Und wie kriegst Du damit die Einrückung entsprechend der Verschachtelungsebene hin? *neugier*

MadMan2k
2004-02-19, 14:46:34
Original geschrieben von Marcel
Und wie kriegst Du damit die Einrückung entsprechend der Verschachtelungsebene hin? *neugier*
Den Inhalt eines Tags als Plattern speichern und dann nochmal auf matches prüfen.