Text innerhalb von "<pre></pre>" ersetzen?

euromark

Grünschnabel
Hi!
ich möchte in einem in der DB gespeicherten Text, der mittels FCKeditor erzeugt wurde, gewisse in pre-tags gekapselte Inhalte verändert darstellen. der Rest bleibt wie er ist.

Code:
test123 text
<pre> echo ('test);</pre>
hier gehts weiter

also in diesem Beispiel den Code des pre-tags mittels Geshi highlighten.
wie ich die Tags an sich ersetzen kann, weiß ich,
aber wie ersetzt man den Inhalt dazwischen?

thx, mark
 
Ich habs nun mal mit regexp probiert, so gut ich konnte:

PHP:
function parseTagsRecursive($input)
	{
	
		$regex = "/<pre>(.*)<\/pre>/siU";
		// mit lang="": $regex = "/<pre\s+.*lang\s*=\"(.*)\">(.*)<\/pre>/siU"; gehts noch nicht ganz

    if (is_array($input)) {
    	$language='php';
		$flag='fancy';
    	$input= $this->geshi_highlight(trim(html_entity_decode($input[1],ENT_QUOTES)),$language,$flag);

    }

    	return preg_replace_callback($regex, array(&$this,'parseTagsRecursive'), $input);
    }
aber ich hätte gerne noch ausgelesen, welche sprache es ist, damit es entsprechendes highlighting bekommt

dazu müsste <pre lang="xyz"> noch irgendwie ausgelesen werden können und dann direkt als neues $language mitgegeben werden

mit
PHP:
$regex = "/<pre\s+.*lang\s*=\"(.*)\">(.*)<\/pre>/siU";
schaffe ich es zwar, dass das pre-tag inkl lang-attribut dann highlighting bekommt, allerdings weiß ich nicht, wie ich dabei noch das lang-attribut zurückbekommen kann...
gibts da irgend eine funktion für?

also dass bei lang="sql" eben dann die function mit der richtigen syntax highlighted - im gegensatz zum standard-php/html

ich bräuchte diesen ausgelesenen attributwert...
 
Zuletzt bearbeitet:
Zurück