Um ehrlich zu sein ist das Originalskript aus dem 4.4.4-mod-rewrite-Paket von stese übernommen, allerdings von mir um eine andere Einbettung und ein Tuning an der einen oder oanderen Stelle erweitert worden.
Generell sieht es folgendermaßen aus:
In der front_content.php wird exakt vor dem Ausspucken des HTML-Textes an den Browser der komplette Code überprüft. Also egal ob Layout-Tags, Modul-Outputs, oder Editor-genrierter Code. Alles wird an einer Stelle überprüft und korrigiert.
Das hat den Vorteil, dass man den Kram nicht an mehreren Stellen machen muß und darüber hinaus verändert das nicht den Code in der DB - das war meine Änderung gegenüber stese - er schrieb die Korrekturen direkt nach dem Editor in die DB.
Aber nun konkret zur Vorgehensweise:
In Zeile ~638 in der front_content.php steht folgende Zeile:
Code: Alles auswählen
print ($str_all);
Code: Alles auswählen
if(strstr($str_all,"W3C//DTD XHTML")!=FALSE) $str_all = TagsToXHTML($str_all);
Die in der front_content.php aufgerufene function TagsToXHTML()(Code s.u.) packt man entweder ebenfalls in die front_content.php ans Ende oder (wie in meinem Fall) in die /contenido/includes/functions.con.php. Für beide Arten gibt es meiner Meinung nach Vor- aber auch Nachteile. Entscheidet selbst!
hier der code der function:
Code: Alles auswählen
/* ##########################################
gesamter code wird übernommen und im der variable
$value gespeichert - diese wird nun umformatiert
########################################### */
# neu - getestet und ok
function TagsToXHTML($value) {
if($value != "") {
########## vorhandene, groß geschriebene tags klein schreiben
$value = preg_replace(',<(/?)([a-zA-Z]+)([^>]+)?(/?)>,ie', '"<\1".strtolower("\2")."\3\4>"', $value);
############## HEAD-Tags
// Meta-Tags
$value = preg_replace( "/<meta([^>]*)>/i" , "<meta\\1 />" , $value);
// Link-Tags
$value = preg_replace( "/<link([^>]*)>/i" , "<link\\1 />" , $value);
############## allg. tags
// hspace, vspace raus
$value = preg_replace( "/(h|v)space='.'|border=0/i" , "" , $value);
// img xhtml <img> -> <img />
$value = preg_replace( "/<img([^>]*)>/i" , "<img\\1 />" , $value);
// align -> style float
$value = preg_replace( "/align=\"([a-z]*)\"/i" , "style=\"float:\\1;\"" , $value);
// valign -> style
$value = preg_replace( "/valign=\"([a-z]*)\"/i" , "style=\"vertical-align:\\1;\"" , $value);
// <br> -> <br />
$value = preg_replace( "/<br>/i" , "<br />" , $value);
// <b> -> <strong> und <i> -> <em>
$value = preg_replace( "/(<b>|<strong>)/i" , "<span style=\"font-weight:bold\">" , $value);
$value = preg_replace( "/(<i>|<em>)/i" , "<span style=\"font-style:italic\">" , $value);
$value = preg_replace( "/(<\/b>|<\/strong>|<\/i>|<\/em>)/i" , "</span>" , $value);
$value = preg_replace( "/<\/i>/i" , "</em>" , $value);
############## formulare
// name durch id ersetzen
$value = preg_replace("/(<form.*?)(name=)(.*?>)/", "\\1id=\\3", "$value");
// input-tag
$value = preg_replace("/(<input.*?)(>)/", "\\1 />", "$value");
// wrap-tag
$value = preg_replace("/(<textarea.*?)( wrap=hard| wrap=soft| wrap=off)(.*?>)/", "\\1\\3", "$value");
############ Behebt Probleme mit bereitsexistierenden XHTML-Tags
$value = str_replace("/ />","/>",$value);
}
// fertig
return $value;
}
Die function ist evtl noch nicht komplett - XHTML-Gurus dürfen sich also berufen fühlen, weitere Ersetzungen hinzuzufügen bzw. zu korrigieren. Mit meinem Firefox-Tidy hat es bisher in allen Fällen funktioniert.
So long
Euer Kpt|Kip!