Quando scrivo il file, presumo, comunque ho risolto. Quando leggo il file uso str_replace per sostituire \" con "
EDIT: ho un'altro problema. Non so perchè ma la soluzione di miki va in collisione con il resto del codice del file .htaccess. Il codice è:
Codice PHP:
RewriteEngine On
RewriteRule ^(\w+)$ index.php?mode=view&file=$1
Se metto il codice di miki, prima o dopo queste istruzioni, viene un 500.
Ho il problema che saltano fuori anche caratteri come \\" o \\', che str_replace stranamente non cambia. Posto il pezzo di codice incriminato:
Codice PHP:
<?php
if(isset($_GET['mode']) && isset($_GET['file']) && $_GET['mode'] == "view") {
$f = file("sources/".$_GET['file'].".txt");
$name = array_shift($f);
$lang = array_shift($f);
foreach($f as $l) {
$ff[] = str_replace(array('\"',"\'",'\\"',"\\'"),array('"',"'",'\"',"\'"),$l);
}
print "<span id=\"subtitle\">".$name."</span><br>";
$gh = new GeSHi(join("",$ff), $lang);
$gh->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
echo $gh->parse_code();
?>
un file del mio nopaste è così strutturato:
Codice:
nome
linguaggio
sorgente
Uso file() per recuperare le linee del file che si vuole vedere, poi tolgo con array_shift() il nome del sorgente e il linguaggio, e uso foreach() per eliminare i caratteri che danno noia. Unica soluzione, secondo me: far funzionare il codice htaccess di miki in combinazione con il mio.
RI-EDIT: ho verificato che gli slash vengono messi alla scrittura del file, e che il codice di miki mi restituisce sempre e comunque un 500, anche se lo provo senza l'altro codice
RI-RI-EDIT: stando alla pagina: http://tinyurl.com/lmxbzc magic_quotes_gpc va impostato a off per togliere l'effetto dell'addslashes() automatico
RI-RI-RI-EDIT: risolto con
Codice PHP:
str_replace("\\\\","\\",$var_del_source);