Salve, dovrei effettuare una sostituzione in una stringa del genere
"ciao <code> marco </code>"
traformandola in qualcosa tipo
"ciao <?php myobj->foo("marco") ?>" (anche questa è una stringa)
Come posso fare?
Salve, dovrei effettuare una sostituzione in una stringa del genere
"ciao <code> marco </code>"
traformandola in qualcosa tipo
"ciao <?php myobj->foo("marco") ?>" (anche questa è una stringa)
Come posso fare?
ciao ... non ho capito bene che cosa vuoi fare ...
tu hai una stampa a video e vuoi sostituirla con un richiamo all'oggetto??
Scusatemi effettivamente non mi sono spiegato bene.
Un utente digita in una textarea qualcosa del tipo
"Il ciclo for è questo:
<code>for(int i=0;i<10;i++);</code>"
preme il tasto e il testo viene salvato nel database.
Poi quando devo visionarlo devo usare geshi. Avevo pensato di effettuare una sostituzione nella stringa, quando salvo nel db, trasformandola così
"il ciclo for è questo: <?php $geshiobj->parse_code(blabla) ?>"
per poi visionarlo correttamente
spero si capisca anche se è un pò contorto
Scusate ma ero di fretta, cercherò di spiegarmi meglio:
nella pagina "insert.php" ho una textarea dove l'utente scrive quello che vuole. All'interno di questa textarea può utilizzare il tag "<code>" (e "</code>" ovviamente) per indicare che la porzione di testo è un codice (un pò come facciamo noi qui sul forum col tag [ code ]).
Dopo aver cliccato su salva il testo viene salvato nel database. Lo script php dovrebbe fare dunque questo
// prendo il testo dalla textarea
// individuo le porzioni racchiuse tra <code> e </code> (non faccio controlli per semplicità)
// per ogni porzione di testo interessata (che chiamo $codice) fai
{
$geshiobj = new Geshi($codice, $linguaggio);
$codiceformattato = $geshiobj->parse_code();
}
// sostituisci nel testo originale le variabli-codice ottenute
// salva nel db
Per la cronaca, la funzione parse_code() restituisce una stringa del tipo "<pre class="java" ecc..".
Il mio problema è ottenere i pezzi <code>...</code> e sostituirli con quel <pre class="java">...</pre> ottenuto con parse_code()
Risolto. Se qualcuno è interessato ecco la mia soluzione (necessita di Simple HTML DOM PARSE e di Geshi o, più in generale, di un parser html e di un syntax highlighter).
Posto un esempio:
------- contenuto della text area nella pagina ----------
Ciclo for in c++
<code lang='cpp'>
for (int i=0;i<10;i++)
do_the_job();
</code>
---------------------------------------------------------
$content è la variabile con cui faccio echo nella textarea.codice:<?php include("simplehtmldom/simple_html_dom.php"); include("geshi/geshi.php"); $html = str_get_html($_POST["textarea"]); $retv = $html->find('code[lang]',0); $geshi = new Geshi($retv->innertext,$retv->lang); $retv->innertext = "<div style='border: solid black 1px'>".$geshi->parse_code()."</div>"; $content = $html; ?>
Trovo la porzione di testo contrassegnata come codice, faccio fare a geshi il parsing e sostiutisco il testo originale con quello formattato