Hallo, ich habe vor kurzem eine Funktion geschrieben die bei der highlight_string() funktion die font tags mit span tags ersetzt, das color attribut mit style="color:#rgb" oder class="bla" ersetzt, Farbangaben zussamenfasst (#CC0000 wird zu #c00), <code><font color=""> mit <pre style="color:" oder class=""> ersetzt und durch Leerzeichen ersetzt.
Ich denke es ist ganz nützlich, wenn man in XHTML 1.0 Strict oder XHTML 1.1 schreiben will, vor allem bei XHTML 1.1, weil dort das style attribut 'deprecated' ist.
Hier ist das script:
PHP-Code:
<?php
#folgendes an den anfang der datei einfügen
define('CLASSES', false); //klassen benutzen - true oder false
define('LOWERCASE', true); //farbnamen klein schreiben - true oder false
#funktion die farbnamen vereinfacht, #rrggbb wird zu #rgb
//diese funktion löschen wenn die farbnamen nicht geändert werden sollen
function simplify_colcode($str) {
if(is_array($str)) {
$arraystr = array();
foreach($str as $key => $value) {
$arraystr[$key] = simplify_colcode($value);
}
return $arraystr;
} else {
return preg_replace('/#([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3/i', '#\1\2\3', $str);
}
}
#funktionsende
if(CLASSES) {
$cols = array(
'bg' => ini_get('highlight.bg'),
'comment' => ini_get('highlight.comment'),
'default' => ini_get('highlight.default'),
'html' => ini_get('highlight.html'),
'keyword' => ini_get('highlight.keyword'),
'string' => ini_get('highlight.string')
);
if(function_exists('simplify_colcode')) {
$newcols = simplify_colcode($cols);
} else {
$newcols = $cols;
}
}
function highlight($str) {
$str = highlight_string($str, true);
if(CLASSES) {
global $cols;
} else {
$cols = array(
'bg' => ini_get('highlight.bg'),
'comment' => ini_get('highlight.comment'),
'default' => ini_get('highlight.default'),
'html' => ini_get('highlight.html'),
'keyword' => ini_get('highlight.keyword'),
'string' => ini_get('highlight.string')
);
}
if(function_exists('simplify_colcode')) {
$newcols = simplify_colcode($cols);
} else {
$newcols = $cols;
}
if(LOWERCASE) {
foreach($newcols as $key => $value) {
$newcols[$key] = strtolower($value);
}
}
if(CLASSES) {
$str = str_replace('<code><font color="'.$cols['html'].'">'."\n", '<pre class="bg html">', $str);
} else {
$str = str_replace('<code><font color="'.$cols['html'].'">'."\n", '<pre style="background: '.$newcols['bg'].';color: '.$newcols['html'].'">', $str);
}
$str = str_replace("\n</font>\n</code>", '</pre>', $str);
foreach($newcols as $key => $color) {
if(CLASSES) {
$str = str_replace('<font color="'.$cols[$key].'">', '<span class="'.$key.'">', $str);
} else {
$str = str_replace('<font color="'.$cols[$key].'">', '<span style="color: '.$color.'">', $str);
}
}
$str = str_replace('</font>', '</span>', $str);
$str = str_replace('', ' ', $str);
return $str;
}
#folgendes in einen <style> tag einfügen (ohne /* und */):
/*
<?php
if(CLASSES) {
foreach($newcols as $key => $value) {
echo '.'.$key.' { color : '.$value.' }'.chr(10);
}
}
?>
*/
?>
Gruß Manithu