Zitat von
FloB
Ein Gefrickel mit str_replace / preg_* oder gar Tidy kann ich leider weder dem Kunden ("Wieso ist die Seite so langsam??", "Warum stürzt mein Server ab??") noch dem Server und zugehörigem Admin verkaufen.
1. Wenn Du möchtest, dass die Seite ohne "Gefrickel" läuft, verwende doch einfach HTML5 und nicht XHTML.
2. Für die Umwandlung sind genau 2 Funktionsaufrufe notwendig, einmal preg_replace und einmal str_replace. Kann mir keiner erzählen, dass diese beiden Aufrufe das System lahmlegen!
Der folgende Code reicht schon vollkommen aus:
PHP-Code:
// Complex replacements
$arrRegReplace = array
(
'@<(base|br|hr|img|input|meta)([^>]*)>@' => '<$1$2 />',
'@<(script|style)([^>]*)>\n@' => '<$1$2>' . "\n/* <![CDATA[ */\n"
);
// Simple replacements
$arrStrReplace = array
(
'/ />' => '/>',
'<script' => '<script type="text/javascript"',
'<style' => '<style type="text/css"',
"\n</script>" => "\n/* ]]> */\n</script>",
"\n</style>" => "\n/* ]]> */\n</style>",
'<html lang="' => '<html xmlns="http://www.w3.org/1999/xhtml" lang="',
'<meta charset="' => '<meta http-equiv="Content-Type" content="text/html; charset='
);
// Set the correct doctype
if ($this->doctype == 'xhtml_strict') {
$arrStrReplace['<!DOCTYPE html>'] = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
} else {
$arrStrReplace['<!DOCTYPE html>'] = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
}
// Execute the replacement functions
$strHtml = preg_replace(array_keys($arrRegReplace), array_values($arrRegReplace), $strHtml);
$strHtml = str_replace(array_keys($arrStrReplace), array_values($arrStrReplace), $strHtml);
Ist nur ein Proof of Concept. Eventuell ziehen wir doch ein zweites Template-System hoch. Aber selbst dann wäre HTML5 das Fallback und XHTML die Option und nicht anders herum.
Lesezeichen