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_line, true)).'</td></tr>';
else
$formatted_code .= "<td bgcolor=$bgcolor>".ereg_replace('(<\?php)+', '', str_replace(array('<code>', '</code>'), '', highlight_string('<?php '.$code_line, true))).'</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