Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Sostituire una sottostringa a una stringa data

    Salve, vorrei effettuare la seguente operazione:

    $stringa=" stringa che ho scritto di prova ";
    $start= "stringa"
    $end= "prova"
    $to_insert="messa per"

    inserire $to_insert in $stringa cancellando ciò che è compreso tra $start e $end

    ottenendo: stringa= stringa messa per prova

    .......come si fa??
    Grazie

  2. #2
    Ci sono vari modi, io farei così:
    Codice PHP:
    $stringa=" stringa che ho scritto di prova ";
    $start"stringa";
    $end"prova";
    $to_insert="messa per";
    $divido explode($start$string);//Divido la stringa in base a $start
    $stringa1 $divido[0];//delle due parti memorizzo la prima
    $divido1 explode($end$divido[1]);//Divido la stringa in base a $end
    $stringa2 $divido1[1];//delle due parti memorizzo la seconda(la prima, infatti, è quella tra $start e $end, che non mi serve)
    //A questo punto ho la due parti della stringa che mi interessano, senza la parte tra $strat e $end, 
    //dunque, nn mi resta che riunirle mettendo, al posto della parte eliminata,
    //la stringa $to_insert, e ovviamente, rimettendo $start e $end
    $out $stringa1.$start.$to_insert.$end.$stringa2
    Spero di esserti stato utile!

  3. #3
    uhmmm... astuto.. ora provo e ti faccio sapere!

  4. #4
    Mi sono accorto di non aver specificato una cosa. Il testo da sostituire è praticamente qualcosa dall'interno di una tabella. Quindi i nostri start ed end sono i tag <td> e </td>.
    Per quanto riguarda il primo posso metterci un id:
    <td id='miotd> ma per il </td> non lo riconoscerò mai come unico in mezzo al file .php che ho.

    Ho fatto una ricerca e ho visto che l'unica cosa è mettere i div al posto della tabella e con javascript fare tipo:
    <div id="tuodiv">
    Ho comprato un capitello
    </div>

    <a href="#" onclick="document.getElementById('tuodiv').innerHT ML = 'ho mangiato dei petardi';">
    cambia
    </a>

    il problema è ke io devo cambiare un file .php che avevo ipotizzato di memorizzare in una stringa prima. Il file alla fine deve essere salvato.
    Grazie per la tua soluzione comunque... sarà utile lo stesso!

  5. #5
    Senza fare tanti giri, puoi usare preg_replace() e risolvere con una riga di codice.

    Codice PHP:
    $stringa =" stringa che ho scritto di prova ";
    $pattern "/start(*.?)end/";
    $replacement "messa per";

    $stringa preg_replace ($pattern$replacement$stringa); 
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #6
    Originariamente inviato da alcio74
    Senza fare tanti giri, puoi usare preg_replace() e risolvere con una riga di codice.

    Codice PHP:
    $stringa =" stringa che ho scritto di prova ";
    $pattern "/start(*.?)end/";
    $replacement "messa per";

    $stringa preg_replace ($pattern$replacement$stringa); 
    Non so se hai letto il mio problema qual'era nella risposta che ho dato. Ma ho letto il funzionamento di preg_replace e credo che la tua soluzione funga al caso.
    Cosa significa "/start(*.?)end/" ...cosa intende?

    Nel mio caso io devo sostituire un elemento di tabella del tipo

    <td id="mioId"> Testo che sarà sostituito </td>

    lasciando i tag al loro posto ovviamente. Dunque con il tuo esempio
    start="<td id="mioId"> "
    end="</td>"
    e posso inserire come parametro della funzione anche limit=1 per indicare che un solo elemento del genere deve essere sostituito. Dunque mi troverà il primo "</td>"... o almeno spero.
    Che ne pensate?

  7. #7
    Ok ho risolto in questo modo! Perfetto! Grazie mille

  8. #8
    Noooo! C'è un altro problema!
    Praticamente quello che sto cercando di fare è modificare un file .php tramite uno script php. Quindi mi prendevo tutto il file come stringa... cerco la stringa nel file e la sostituisco.
    Ma non sempre la stringa viene trovata! Se è un codice html un pò + complesso la stringa diventa lunga e non so perché non viene trovata... e non sostituita!
    Qualcuno sa perké può avvenire questo?

  9. #9
    Una soluzione alternativa alle regular expressions (che spesso con il markup HTML hanno qualche difficolta') e' usare Simple HTML DOM Parser. Esempio:

    Codice PHP:
    require 'simple_html_dom.php';

    $testo 'testo prima <div id="tuodiv">
    Ho comprato un capitello
    </div> testo dopo'
    ;

    $html str_get_html($testo);
    $html->find('#tuodiv'0)->innertext "nuovo contenuto del div";

    echo 
    $html

  10. #10
    Originariamente inviato da k.b
    Una soluzione alternativa alle regular expressions (che spesso con il markup HTML hanno qualche difficolta') e' usare Simple HTML DOM Parser.
    Si in effetti, ad averlo saputo subito, si sarebbe ragionato non solo con le espressioni regolari.
    Fatto sta che con un escape opportuno nel pattern, di solito, non si hanno grossi problemi neanche con i tag HTML.

    Ad ogni modo:
    Originariamente inviato da angeloulivieri
    Non so se hai letto il mio problema qual'era nella risposta che ho dato. Ma ho letto il funzionamento di preg_replace e credo che la tua soluzione funga al caso.
    Cosa significa "/start(*.?)end/" ...cosa intende?

    Nel mio caso io devo sostituire un elemento di tabella del tipo

    <td id="mioId"> Testo che sarà sostituito </td>

    lasciando i tag al loro posto ovviamente. Dunque con il tuo esempio
    start="<td id="mioId"> "
    end="</td>"
    e posso inserire come parametro della funzione anche limit=1 per indicare che un solo elemento del genere deve essere sostituito. Dunque mi troverà il primo "</td>"... o almeno spero.
    Che ne pensate?
    Avevo letto perfettamente, ed infatti ti ho risposto con una soluzione funzionante, o no???
    Non ho capito cosa tu voglia fare con il LIMIT che è una istruzione MySQL.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.