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

    [REGEXP] Sostituire "[img=numero]" con "numero/..."

    Salve a tutti,
    come da topic è possibile tramite espressioni regolare sostituire una stringa di questo tipo:
    [img=numero]

    con:

    numero/...

    Nel senso di effettuare una sostituzione parametrica?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Non so se ho capito.
    codice:
    $stringa = '[img=12]';
    preg_match("/(=)(.*)(\])/",$stringa,$mth);
    echo $mth[2].'/...';

  3. #3
    Originariamente inviato da nicola75ss
    Non so se ho capito.
    codice:
    $stringa = '[img=12]';
    preg_match("/(=)(.*)(\])/",$stringa,$mth);
    echo $mth[2].'/...';
    Si, però con una differenza: nella stringa possono esserci "[img=1], [img=2], ecc" e devono essere sostituiti con le relative stringhe (dipendenti dal numero).
    E' possibile?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Per trovare tutti i valori numerici prova questa.
    codice:
    $stringa = 'testo [img=12143] testo testo [img=2345] testo [img=1001]';
    preg_match_all("/\[img=(.*?)\]/",$stringa,$mth);
    echo "<pre>";
    var_dump($mth[1]);
    echo "</pre>";
    edit. Per fare tutte le sostituzioni non saprei. E' da poco che sbatto la testa su queste cose.

    riedit. Forse ci son riuscito.
    codice:
    $stringa = 'testo [img=12143] testo testo [img=2345] testo [img=1001]';
    $stringa = preg_replace('[img=(.*?)]','numero/'.'\\1',$stringa);
    echo $stringa;
    mmm.ho cantato vittoria troppo presto.

  5. #5
    Originariamente inviato da nicola75ss
    Per trovare tutti i valori numerici prova questa.
    codice:
    $stringa = 'testo [img=12143] testo testo [img=2345] testo [img=1001]';
    preg_match_all("/\[img=(.*?)\]/",$stringa,$mth);
    echo "<pre>";
    var_dump($mth[1]);
    echo "</pre>";
    edit. Per fare tutte le sostituzioni non saprei. E' da poco che sbatto la testa su queste cose.

    riedit. Forse ci son riuscito.
    codice:
    $stringa = 'testo [img=12143] testo testo [img=2345] testo [img=1001]';
    $stringa = preg_replace('[img=(.*?)]','numero/'.'\\1',$stringa);
    echo $stringa;
    mmm.ho cantato vittoria troppo presto.
    Ho risolto grazie al tuo aiuto. Basta combinare preg_match_all con un ciclo for:
    codice:
    $n = preg_match_all($exp, $word, $match, PREG_PATTERN_ORDER);
      for ($j = 0; $j < $n; $j++) {
       $word = str_replace($match[0][$j], ..., $word);
      }

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Scusa, ma così non perdi tutti i numeri?

  7. #7
    Originariamente inviato da nicola75ss
    Scusa, ma così non perdi tutti i numeri?
    Il contrario, ottengo solo i numeri, il che non è proprio quello che voglio io.
    Infatti se ho una stringa "testo [img=1]" quel codice mi trova l'1, anche se a me servirebbe anche tutto quello che c'è tra le parentesi quadre (comprese), altrimenti non posso effettuare la sostituzione.

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Perdona la mia ottusità ma partendo da una stringa come questa

    $stringa = 'testo [img=12143] testo testo [img=2345] testo [img=1001]';

    mi dici esattamente la tua stringa finale quale dovrebbe essere.

  9. #9
    Originariamente inviato da nicola75ss
    Perdona la mia ottusità ma partendo da una stringa come questa

    $stringa = 'testo [img=12143] testo testo [img=2345] testo [img=1001]';

    mi dici esattamente la tua stringa finale quale dovrebbe essere.
    Che ottusità, direi gentilezza...

    Risultato:
    'testo [img].../immagine_12143[/img] testo testo [img].../immagine_2345[/img] testo [img].../immageine_1001[/img]

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Prova questo.
    codice:
    $word = 'testo [img=12143] testo testo [img=2345] testo [img=1001]';
    $pattern = "/(\[img=(.*?)\])/";
    $replace =  '[img].../immagine_$1[/img]';
    $elimina = array('[img=',']');
    $word = preg_replace($pattern,$replace,$word);
    $word = str_replace($elimina,'',$word);
    echo $word;

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.