Ciao ragazzi ,

Innanzitutto mi presento , sono nuovo del forum , mi chiamo Alessandro e ho iniziato a praticare un pò di php da non molto.

Purtroppo mi ritrovo in una condizione un pò strana che non riesco a risolvere si tratta dei bbcode e della funzione highlight_string() per colorare il codice php...


Potreste dirmi se ho fatto bene ?

Praticamente io ho una textarea che utlizzo per inserire gli articoli , nella pagina dove inserisco l'articolo ho questa condizione:

$testo=htmlentities($testo);

poi ho la pagina che recupera dal db l'articolo , utilizzo la codifica i bbcode:

<?php
function bbcode_format($var) {
$search = array(
"/\[B\](.*?)\[\/B\]/is",
"/\[I\](.*?)\[\/I\]/is",
"/\[U\](.*?)\[\/U\]/is",
"/\[IMG\](.*?)\[\/IMG\]/is",
"/\[URL\](.*?)\[\/URL\]/is",
"/\[URL\=(.*?)\](.*?)\[\/URL\]/is",
"/\[b\](.*?)\[\/b\]/is",
"/\[i\](.*?)\[\/i\]/is",
"/\[u\](.*?)\[\/u\]/is",
"/\[img\](.*?)\[\/img\]/is",
"/\[url\](.*?)\[\/url\]/is",
"/\[url\=(.*?)\](.*?)\[\/url\]/is"
);
$replace = array(
'$1',
"$1",
"<u>$1</u>",
'[img]$1[/img]',
'$1',
'$2',
'$1',
"$1",
"<u>$1</u>",
'[img]$1[/img]',
'$1',
'$2'
);

while(preg_match("#\[quote\](.*?)\[\/quote\]#is", $var)!=0)
$var = preg_replace("#\[quote\](.*?)\[\/quote\]#is", '<table border="1"><tr><td>$1</td></tr></table>', $var);
$var = preg_replace($search, $replace, $var);
return nl2br($var);
}
?>

e questa funzione è per colorare il codice php:
Codice PHP:
<?php
function printCode($source_code)
    {
        
        if (
is_array($source_code))
            return 
false;
       
        
$source_code explode("\n"str_replace(array("\r\n""\r"), "\n"$source_code));
        
$line_count 1;

        foreach (
$source_code as $code_line)
        {
            
$line_count++;
            if((
$line_count%2)==0){$bgcolor="#ffffff";}else{$bgcolor="#FFFFCC"; }
            
$formatted_code .= "<tr><td bgcolor=$bgcolor>".$line_count.'</td>';
           
            if (
ereg('<\?(php)?[^[:graph:]]'$code_line))
                
$formatted_code .= "<td bgcolor=$bgcolor>"str_replace(array('<code>''</code>'), ''highlight_string($code_linetrue)).'</td></tr>';
            else
                
$formatted_code .= "<td bgcolor=$bgcolor>".ereg_replace('(&lt;\?php)+'''str_replace(array('<code>''</code>'), ''highlight_string('<?php '.$code_linetrue))).'</td></tr>';
        }

        return 
'<table style="font: 1em Consolas, \'andale mono\', \'monotype.com\', \'lucida console\', monospace;">'.$formatted_code.'';
   }
?>
nella funzione del bbcode dovrei aggiungere nell'array i tag [CODE1][/CODE1] e lo posso fare senza problemi , ma nell'array $replace come indico che deve far partire la funzione printCode() ?.. ho provato con ,printCode($1), ma giustamente mi dà errore perchè la variabile è un numero , ho provato printCode("$1") , qui non mi dà errore però mi stampa a video la variabile e non il contenuto..

Un'altro problema e per quello chiedo a voi , ho notato che salvando la variabile $testo con htmlentities e poi richiamando la funzione printCode , noto che vengono stampate le entità delle parentesi rendendo il codice incomprensibile.. soluzione?..


Vi Ringrazio tanto in anticipo per l'aiuto..

Ale