HTML Code verschönern/optimieren mit PHP

GeneSys386

Mitglied
Hallo Leute,

Ich bekomme von einem Editor (FCKeditor) relativ unsauberen HTML-Code geliefert und suche nun nach einer Möglichkeit den HTML-Code zumindest syntaktisch valide zu machen und leere (sinnlose) Tags zu löschen usw.

Das Problem ist das der Code von einem Bekannten erstellt wird, der kein HTML kann und nur 'nen WYSIWYG Editor verwenden kann.. der natürlich auch dies und jenes einstellt (sieht ja so schön bunt aus)

Code:
<p><strong><font color="#00f000"><font size="\&quot;6\&quot;"><font face="Times New Roman" color="#ff00ff" size="6" new="\&quot;\\&quot;\\&quot;\&quot;">XYZ NEWSLETTER</font>&nbsp;<br />
</font></font><font face="Verdana">Auslieferung von Ware gem&auml;&szlig; u.a. Liefer- und Zahlungsbedingungen</font>&nbsp;</strong></p>
<div id="newsletterwrap" style="FONT-SIZE: 12px; FONT-FAMILY: Courier New, Courier, mono; BACKGROUND-COLOR: #fff">
<p><font size="4"><strong>Sehr geehrter Herr XYZ,</strong></font></p>

... so sieht z.B. ein Ausschnitt des schönen Codes aus, der mir da geliefert wird.


Meine endgültige Frage nun: Ist jemanden eine PHP-Klasse/-Funktion/-Funktionssammlung bekannt, die eine solche validierung/optimierung/verschöngerung macht? Ich find beim "googlen" leider nur Software die man installieren muss ... native PHP wär mir natürlich lieber ...

Freue mich auch über Ideen/Denkanstöße wie man das Problem auch anders lösen könnte.

Schöne Grüße!
 
Um sowas erfolgreich umsetzen zu können, musst du ziemlich genau wissen, was von deinem Freund überhaupt geliefert wird. Wenn ich mir den Code den du formatieren möchtest so anschauen, kann ich mir vorstellen, dass es ziemliches Kopfzerbrechen verursachen würde, das so zu konvertieren, dass du doctype-konformes HTML bekommst :)

Ich kenne keine Scripts die so etwas können. Ich schätze, da es so viele Möglichkeiten gibt, wie solch unsauberer Code daherkommen kann, wird es auch kaum eine standardisierte Lösung geben. Vermutlich wirst du entweder etwas selber schreiben oder deinem Freund etwas HTML beibringen müssen ;)

Falls du selber was schreiben musst:
- Schau im FCKEditor, welche Buttons aktiviert sind und was für HTML bei jeder dieser Funktionen ausgeworfen wird
- Für jedes der "unschönen" Tags kannst du dann eigene "schöne" Tags definieren und im Ursprungs-HTML ersetzen

Wenn du also genau weisst, was von deinem Freund ankommt, kannst du es verarbeiten. Unten hab ich noch ein kleines Beispiel hingemalt. Kann natürlich optimiert werden (alle Werte des Style-Attributes in ein span-Tag, etc.)

PHP:
<?php
$html = "<font color=\"#CC0000\"><strong><font size=\"10\">";
$html .= "Testitest";
$html .= "</font></strong></font>";

echo $html;

//Strong-Tags ersetzen
$pattern[] = "#<strong>#";
$replace[] = "<span style='font-weight:bold;'>";

//Font-Tags die Color-Attribute beinhalten ersetzen
$pattern[] = "#<font color=\"(\#[ABCDEF0-9]{6})\">#";
$replace[] = "<span style='color:$1;'>";

//Font-Tags die Size-Attribute beinhalten ersetzen
$pattern[] = "#<font size=\"(\d+)\">#";
$replace[] = "<span style='font-size:$1pt'>";

$pattern[] = "#</font>#";
$replace[] = "</span>";

$pattern[] = "#</strong>#";
$replace[] = "</span>";

$html = preg_replace($pattern, $replace, $html);

echo "<hr />";

echo $html;
?>

Gruss Igäl
 
Schau dir doch mal Tidy an.

Kurzbeschreibung hat gesagt.:
HTML Tidy ist ein Computerprogramm, das dabei hilft, ungültige HTML-Tags zu erkennen und diese Fehler durch Entfernen bzw. Einfügen der fehlenden Tags zu beheben. Entwickelt wurde das Programm von Dave Raggett (W3C), später wurde es ein SourceForge-Projekt. Der Quelltext ist in ISO-C geschrieben und steht unter der W3C-Lizenz.

Das ganze gibt es dann auch in PHP von John Coggeshall.
 
Mal eine bescheidene Frage, (soll jetzt nicht angreifend klingen!!) warum nutzt du keinen vernünftigen Editor?
Es gibt so viele (schöne) und freie Editoren zum herunterladen, warum einen der auf Javascript basiert und dazu noch im web stehen muss

hier mal ein zwei die das in fernünftigen Code ausgeben!!

Waversleave
FirstPage2006 (weiß nur nich genau ob der Freeware war)
oder Ulli Meybohms
Phase 5

Dann hast du das Problem mit den unsauberen Html nicht ;)

Mohag

Ps: Hab ihn mal getestet, und für Entwicklung ist ein lokaler Editor in jedem Fall vorzuziehen.
 
@Mohag

Er meint nicht Code, der selber geschrieben wird, sondern Code der von einem WYSIWYG-Editor (wie FCKEditor) generiert wird, wenn der User da Daten eingibt.
 
@Igäl

Das hab ich schon mit bekommen, nur kann man sich nicht beschweren das es (sch...) nicht gut aussieht wenn ein Programm einem die Arbeit ab nimmt ;)

Zudem ist FirstPage auch ein WYSIWYG Editor!!
Und der macht das schon recht niedlich *GRINS.

Mohag
 
Das hab ich schon mit bekommen, nur kann man sich nicht beschweren das es (sch...) nicht gut aussieht wenn ein Programm einem die Arbeit ab nimmt

Da hast' schon recht .. ich schreib auch meinen Code höchstpersönlich mit der Hand -- ich halte auf WYSIWYG nicht mehr (all) viel .. aaaber das Problem ist ja folgendes...

Mein Bekannter hätte gern eine Newslettersoftware (die exakt auf seine Bedürfnisse zugeschnitten ist) und trotzdem einfach zu bedienen ist (der is um die 55 Jahre alt). Dem kann ich einfach ned zumuten das der HTML lernt ;) Bzw. würd ich dran verzweifeln :-D

Deswegen ein in die Software integrierter HTML-WYSIWYG-Editor damit er dort seinen Newsletter gestaltet und auf senden klickt und das teil einfach raus geht... problem: Durch sein vieles rumprobieren in einem Newsletter bringt er natürlich den Editor reichlich an seine Grenzen .. und dann scheinen so lustige Fehler aufzutreten wie &quot;'s in Tags eingebettet -- völlig irrationale attribute usw ... WIE er das genau schafft weiß ich auch ned :D


Aber vielen Dank für die Hinweise! Ich werd wohl eine Lösung aus tidy/selber-code-geschnipsel integrieren; das sollte hoffentlich genügen ^^


Merci!
 
Wie man sowas schafft... zu 90% liegt es daran das die Personen die Texte in WORD schreiben und sie copy&paste einfügen. DAS sieht dann wirklich übel aus.

Die einzige Sinnvolle Art und weise das zu unterbinden ist die Plain-Text-Insert Funktion von den FCK Editor zu verwenden.

ODER

Du baust einen eigenen minieditor ,) aber warscheinlich fährt er wenn er es aus Word raus kopiert damit wesentlich besser.
 
Zurück