CSS Highlight - RegExp - Text

sub7even

Mitglied
Hallo,
ich habe die letzten Tage mit GeSHi herumexperimentiert,
der CSS Highlight funktioniert leider nicht wie gewollt.

Deshalb habe ich beschlossen selbst einen zu schreiben,
da dieser für CSS ja nicht sonderlich groß bzw. anspruchsvoll ist.

Bin jedoch jetzt an einer stelle die mir doch etwas Probleme bereitet,
nähmlich das färben von texten (in "" oder '').

Hier mal mein Aktueller code für den CSS highlight:
PHP:
if($params=="css")
		{
			$hcode .= "<pre class=\"css\">";
			$cssRx1 = "/([A-z-_]*)\:([A-z0-9#()-_,\/\"'!.\%\\ ]*);/";
			$cssRx2 = "/\"([A-z0-9#()-_,\/!.\%\\ ]*)\"/";
			$cssRx3 = "/\'([A-z0-9#()-_,\/!.\%\\ ]*)\'/";
			$cssCode = preg_replace($cssRx2, "<span class=\"str\">&quot;$1&quot;</span>", $cssCode);
			$cssCode = preg_replace($cssRx3, "<span class=\"str\">'$1'</span>", $cssCode);
			$cssCode = preg_replace($cssRx1, "<span class=\"egs\">$1</span>:<span class=\"val\">$2</span>;", $code);
			$cssCode = str_replace("!important", "<span class=\"important\">!important</span>", $cssCode);
			$hcode .= $cssCode;
			$hcode .= "</pre>";
		}

und der dazugehörige stylesheet wenn der auch eher weniger Interessant sein dürfte^^
Code:
/* Highlight - CSS */
.css .egs { color:#09F; }
.css .val { color:#9F0; }
.css .str { color:#C00; }
.css .important { color:#F00; }

im php code enthält die variable $code bereits den zu highlightenden code.

hoffe mir hilft jemand :/
 
Zuletzt bearbeitet:
Probier es mal so:
PHP:
		if($params=="css")
		{
			$hcode .= "<pre class=\"css\">";
			$cssRx1 = "/([A-z-_]*)\:([A-z0-9#()-_,\/\"'!.\%\\ ]*);/";
			$cssRx2 = "/\'(.*)\'/siU";
			$cssRx3 = "/\"(.*)\"/siU";
			
			$cssCode = preg_replace($cssRx3, "<span class=\"str\">&quot;$1&quot;</span>", $cssCode);
			$cssCode = preg_replace($cssRx1, "<span class=\"egs\">$1</span>:<span class=\"val\">$2</span>;", $code);
			$cssCode = preg_replace($cssRx2, "<span class=\"str\">'$1'</span>", $cssCode);
			
			$cssCode = str_replace("!important", "<span class=\"important\">!important</span>", $cssCode);
			
			$hcode .= $cssCode;
			$hcode .= "</pre>";
		}

Müsste eigentlich funktionieren ;)
 
Zurück