PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verschachtelte Font-Tags zusammenführen



Slurm
30-04-2004, 11:51
Hallo an Alle!

Ich habe das Problem, dass ich HTML-Seiten mit 'endlos vielen' ineinander verschachtelten Font-tags habe, die sich dadurch nicht mehr vernünftig weiterverarbeiten lassen.

Ich suche nun eine Lösung, diese Tags zusammenzufassen und so den ganzen HTML-Code zu kürzen. Wichtig ist dabei, dass die Tags nicht vollständig verschwinden sollen, sondern nur zusammengelegt werden und die Attribute erhalten bleiben.

Kann mir jemand weiterhelfen?

Gaert
30-04-2004, 12:48
Ich habe keine ahnung, was du meinst, bin mir aber fast sicher, dass du im falschen Forum gelandet bist...

Erkläre mal Anhand eines Beispiels was du machen möchtest.

Slurm
30-04-2004, 13:35
Also: Ich habe z.B. einen HTML-Code:

<font size="1"><font color="#000000">Text</font></font>

Der soll dann - via PHP - in folgenden umgewandelt werden:

<font size="1" color="#000000">Text</font>

Analog für noch mehr font-Tags. Also immer die kürzestmögliche Ausgabe.

Gaert
30-04-2004, 14:06
Da ist IMHO Handarbeit und ein Texteditor mit "suchen/ersetzen" Funktion gefragt... ich verstehe nicht, was du da mit PHP willst.

Slurm
30-04-2004, 14:27
Es gibt diese Funktion z.B. bei Macromedia Dreamweaver. Dort gehts automatisch und nicht mit Handarbeit.

Ich kann die HTML-Seiten nicht per Hand nach überflüssigen font-Tags durchsuchen, da diese aus einem WYSIWYG-Editor kommen und die Benutzer leider durch oftmaliges Markieren und Ändern der Font-Informationen diese vielen verschachtelten Font-Tags erzeugen. Beim Umwandeln in PDFs kommt es dann bei zuvielen Font-Tags zu Fehlermeldungen. Daher ist es notwendig, die überflüssigen Tags vor dem Umwandeln zusammenzuführen.

Da die ganze Seite mit PHP läuft - vom Erzeugen der Dokumente bis zum Druck - ist logischerweise eine PHP-Lösung sinnvoll (Mit Tidy hab ich es auch schon versucht, aber selbst die Clean-Funktion kann das nicht, sondern ersetzt nur die Font-Tags durch CSS).

undefined
30-04-2004, 16:41
geht auch mit PHP und einem Regex ;)
Beispiel: Aber Vorsicht sehr Rechnerlastig und vor allem keine Gewähr;)

<?php
ini_set('memory_limit', '8M');
ini_set('max_execution_time', '180');

function rewrite($dirfile, $array)
{
if (file_exists($dirfile)) {
$daten = implode(" ", $array);
$l = strlen($daten);
$fp = fopen($dirfile, "w+");
fputs($fp, $daten, $l);
fclose($fp);
return true;
}
}

function scanforPattern($dir)
{
$opendir = opendir($dir);
while ($file = readdir($opendir)) {
$buf = array();
if (preg_match("/\.php/", $file)) {
foreach (file($dir . "/" . $file) AS $z) {
if ( !preg_match("/\<tt .+|\<\/tt\>/", $z) )
$buf[] = ltrim( preg_replace("/\.html/", ".php", $z) );
}
rewrite($dir . "/" . $file, $buf);
clearstatcache();
}
}
}

//scanforPattern("./specfile/rpm/HOWTO");

?>

Slurm
30-04-2004, 17:11
Ich dank dir mal für die Antwort, aber das ist nicht das, was ich suche.

Anscheinend drück ich mich wirklich so unverständlich aus, daher hier nochmal eine genaue Beschreibung des Problems:

Ein Benutzer bearbeitet über einen WYSIWYG-Editor im Browser eine Seite, die er als PDF ausdrucken möchte. Während des Arbeitens markiert er Bereiche im Text und verändert Schriftgröße , -farbe und Ähnliches. Durch das viele Markieren und Verändern der Bereiche entstehen im Quelltext wahre Tag-Orgien wie z.B:

<font color="#000099" size="1"><font color="#000099"><font size="1"><font color="#000099">Text<font color="#000000"><font face="Georgia"><font size="2"><br></font><strong><font size="2">Noch ein Text</font></strong></font></font></font></font></font></font>

(Das ist nur ein Auszug, also können Anfangs- und Endtags fehlen)

Vieles davon lässt sich zusammenfassen und das Ganze soll jetzt soweit optimiert werden, dass nur noch die notwendigsten Tags für die Formatierung im Quelltext stehen, bevor dieser an html2ps und dann an ps2pdf geleitet wird, da diese Programme bei dem Code-Chaos aussteigen.

Es geht nur darum, den Quelltext zu optimieren und da auch nur die font-Tags.

Ich hoffe, das ist jetzt verständlicher.

undefined
30-04-2004, 17:16
Absolut falsches Forum ;)
Was du brauchst ist TIDY siehe Google HTML Tidy ;)
PS:

<?php

$string = 'sssssssssssssss <font size="1"><font color="#000000">Text</font></font> sssssssssssssssssssss';


//PATTERN
$R1 = '(\<font\s{1,}size=\"\d{1,2}\"\>)';
$R2 = '(<font\s{1,}color=\"#[\w|\d]{6}\"\>)';
$R3 = '([\b|\s]?\w+[\b|\s]?)';
$R4 = '(<\/font\>[\s+]?\<\/font\>)';


preg_match_all("/" . $R1 . $R2 . $R3 . $R4 . "/i", $string, $out, PREG_PATTERN_ORDER);

echo "<textarea cols=80 rows=20>";
print_r($out);
echo "</textarea>";
echo '<br/>';
$neu = preg_replace("/" . $R1 . $R2 . $R3 . $R4 . "/is", '<font size="10" color="#FF8800">$3</font>', $string, PREG_SET_ORDER);


echo "<textarea cols=80 rows=3>";
print_r($neu);
echo "</textarea>";
echo '<br/>' . $neu;

?>

Slurm
30-04-2004, 17:29
Wenn du mir verrätst, wie ich es mit Tidy schaffe (ich hab ja schon geschrieben, dass es font-Tags nicht zusammenführt, sondern im besten Fall durch css ersetzt - clean - oder komplett entfernt - bare) wär ich glücklich, aber deinen neuen Code muss ich mir mal anschauen.

undefined
30-04-2004, 19:02
Tidy ist ein Parser und Formatier Tool.
Welchen Editor verwendest du?
PS: Betriebsystem?

Slurm
01-05-2004, 08:06
Editor ist Htmlarea.
BS ist Linux Debian Stable.
Tidy ist die aktuelle Version von Sourceforge drauf.

Aber wie gesagt, mit keiner der Tidy-Funktionen hab ich das Problem lösen können.

Slurm
14-05-2004, 06:26
Ursprünglich wollte ich auch mit tidy alle font-tags in css umwandeln (tidy kann das mit dem Attribut --clean). Das hat auch gut funktioniert, allerdings gabs dann Probleme beim Umwandeln in PDF (html2ps weigerte sich beharrlich die css-Formatierungen korrekt zu übersetzen).

Somit bin ich bei den Standard-Funktionen von htmlarea (font-tags mit versch. Größen, Farben und Schriften) geblieben und wenn nicht zu oft der gleiche Text neu formatiert wird (jede Formatierung bringt eben einen neuen font-tag um den Text mit sich), läuft alles bis zum PDF auch korrekt. Aber es gibt eben Ausnahmen und die wollte ich auch noch in den Griff bekommen.

Claudine
14-05-2004, 17:19
Original geschrieben von Slurm
läuft alles bis zum PDF auch korrekt. Aber es gibt eben Ausnahmen und die wollte ich auch noch in den Griff bekommen.

Ist ne Sackgasse.
Mußt immer wieder rumfummeln, beobachten, überwachen und korrigieren.
Du willst doch mal fertig werden.;-)

Aber das ist meine persönliche Meinung.
Zusammenbasteln kann man ja alles mögliche.

schönes Wochenende