zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden highlight_string mit <span> statt <font>

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 11.12.2004, 00:29
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 06.11.2004
Beiträge: 34
manithu befindet sich auf einem aufstrebenden Ast
Standard highlight_string mit <span> statt <font>

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($strtrue);
    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
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 11.12.2004, 02:37
Benutzerbild von netspy
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 13.08.2004
Ort: Leipzig
Beiträge: 1.953
netspy sorgt für eine eindrucksvolle Atmosphärenetspy sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo manithu,

nette Idee. Werd ich mir mal bei Gelegenheit mal genauer anschauen. Deine Funktion simplify_colcode() ist aber IMO etwas umständlich. Das lässt sich mit einem regulären Ausdruck in einer einzigen Zeile erledigen:

Code:
function simplify_colcode($str) {
  return preg_replace('/#([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3/i', '#\1\2\3', $str);
}
Damit sollten alle Farbcodes im übergebenen String gekürzt werden.

Mario
__________________
AppDev Blog · AppDev Forum
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 11.12.2004, 11:34
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 06.11.2004
Beiträge: 34
manithu befindet sich auf einem aufstrebenden Ast
Standard

Danke netspy, hab die funktion aktualisiert

Gruß Manithu
Mit Zitat antworten
  #4 (permalink)  
Alt 11.12.2004, 11:41
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.733
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Ich hab auf http://aidan.dotgeek.org eine PHP-Highlight-Klasse gefunden, die neben den üblichen Elementen der vordefinierten Highlight-Funktionen PHPs auch weitere Elemente hervorhebt.
Diese hab ich meinen Vorstellungen etwas angepasst und unter anderem eine CSS-Klassen basierende PHP-Highlight-Klasse daraus gemacht. So sind die Elemente ganz einfach durch die CSS-Eigenschaften anzupassen.
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
<span> in <span>? Korasu (X)HTML 3 09.04.2012 12:39
Navigation und <span>: Firefox vs. Explorer grommmm CSS 4 08.01.2009 00:36
Verschachtelte <span> und der liebe IE Kaffee CSS 3 21.12.2007 12:10
Problem mit <span> Dzaacky CSS 2 08.08.2007 18:13
<span> in <p> Krischu CSS 1 05.07.2007 14:52


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:42 Uhr.