Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Ricerca tag e sostituzione

    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?

  2. #2
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    ciao ... non ho capito bene che cosa vuoi fare ...
    tu hai una stampa a video e vuoi sostituirla con un richiamo all'oggetto??

  3. #3
    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

  4. #4
    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()

  5. #5
    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>

    ---------------------------------------------------------

    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;
    ?>
    $content è la variabile con cui faccio echo nella textarea.
    Trovo la porzione di testo contrassegnata come codice, faccio fare a geshi il parsing e sostiutisco il testo originale con quello formattato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.