niet echt duidelijke titel maar ik zal het hier ruimer uitleggen.

ik heb 1 file waar ik mijn functies in wil plaatsen (om het overzichtelijk te houden)

Nu heb ik een php code highlight die alles tussen <? en ?> omzet naar kleurcodes. (werkt)
ook heb ik een smiley functie die de smileys en hun activation key uit dbase haalt en :) omzet naar het corresponderende plaatje.

alleen hier komt het tricky gedeelte....

als ik vervolgens dit doe:

Gewone tekst etc etc. :)

<?
$bladiebla="Hallo";
echo $bladiebla;
// enzovoorts
echo":)"; //deze moet dus niet omgezet worden
?>

gewone tekst verder :)

Ik wil dus dat de smiley die in de php code staat niet omgezet hebben.
Hoe exclude ik die in mijn smiley parser?

Code:
<?

// highlight source
function showsource ($code) {
ob_start();
$code = stripslashes($code);
highlight_string($code);
$colorsource = ob_get_contents();
ob_end_clean();
$colorsource = str_replace (" ", " ",$colorsource);
$colorsource = str_replace("<?", "<pre><?", $colorsource);
$colorsource = str_replace("?>", "?></pre>", $colorsource);

return $colorsource;
}

// Smileys parsen
function smiley($input)
{
$query=mysql_query("select id, keycode, image, CHAR_LENGTH(keycode) as lengte from smilies order by lengte desc");
while($data=mysql_fetch_object($query)) {
$key="$data->keycode";
$image="$data->image";
$input = str_replace($key, "<img src=\"$image\" align=\"absmiddle\">", $input);
}
return $input;
}

?>
Ik had dit ergens gelezen een tijd geleden, en het stond hier.
Als ik het allemaal goed lees zet deze dan alles netjes als "code" neer.. maar vervangt hij alsnog mijn smilies.

Ik werk trouwens niet met UBB Codes. Maar met HTML Area.

Heb de code toch maar even gebruikt en idd vervangt hij nu geen enkele :) meer..
Zo.... opgelost.

werkende code:
<?
// Highlight functies
function phphighlite_replace($code) {
$code = trim(str_replace("\\\"", "\"", $code));
#$code = str_replace("\\\"","\"",$code);
if(empty($code)) {
return "
 
";
} else {
array_push($GLOBALS['phphighlite'], $code);
return "
".(count($GLOBALS['phphighlite'])-1)."
";
}
}

function phphighlite($id, $fixed=1) {
$code = $GLOBALS['phphighlite'][$id];
$splitted = explode("\n", $code);
$grootte = count($splitted)+1;
if(!strpos($code,"<?") && substr($code,0,2)!="<?") {
$code="<?".trim($code)."?>";
$addedtags=1;
}
ob_start();
$oldlevel=error_reporting(0);
highlight_string($code);
error_reporting($oldlevel);
$buffer = ob_get_contents();
ob_end_clean();
if(!empty($addedtags)) {
$openingpos = strpos($buffer,'&lt;?');
$closingpos = strrpos($buffer, '?');
$buffer = substr($buffer, 0, $openingpos).substr($buffer, $openingpos+5, $closingpos-($openingpos+5)).substr($buffer, $closingpos+5);
}
$page_popup = "";

$return = $buffer;
return $return;
}

function ubb($string) {
// Code
$GLOBALS['phphighlite'] = array("dummy");
$string = preg_replace("_<\?(.*?)\?>_ise","phphighlite_replace('<? \\1 ?>')",$string);
#$string = preg_replace("_\[code\](.*?)\[/code\]_ise","phphighlite_replace('\\1')",$string);
// HTML codes wegwerken
$string = htmlspecialchars($string);
// Enters maken
$string = nl2br($string);

// Smileys


$query=mysql_query("select id, keycode, image, CHAR_LENGTH(keycode) as lengte from smilies order by lengte desc");
while($data=mysql_fetch_object($query)) {
$key="$data->keycode";
$image="$data->image";
$string = str_replace($key, "<img src=\"$image\" align=\"absmiddle\">", $string);
}

// Code
$string = preg_replace("_\[code\]([0-9])\[/code\]_ise", "phphighlite('\\1')", $string);

// Return
return $string;
}
?>

Reageren