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
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
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).Originariamente inviato da nicola75ss
Non so se ho capito.
codice:$stringa = '[img=12]'; preg_match("/(=)(.*)(\])/",$stringa,$mth); echo $mth[2].'/...';
E' possibile?
Per trovare tutti i valori numerici prova questa.
edit. Per fare tutte le sostituzioni non saprei. E' da poco che sbatto la testa su queste cose.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>";
riedit. Forse ci son riuscito.
mmm.ho cantato vittoria troppo presto.codice:$stringa = 'testo [img=12143] testo testo [img=2345] testo [img=1001]'; $stringa = preg_replace('[img=(.*?)]','numero/'.'\\1',$stringa); echo $stringa;![]()
Ho risolto grazie al tuo aiuto. Basta combinare preg_match_all con un ciclo for:Originariamente inviato da nicola75ss
Per trovare tutti i valori numerici prova questa.
edit. Per fare tutte le sostituzioni non saprei. E' da poco che sbatto la testa su queste cose.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>";
riedit. Forse ci son riuscito.
mmm.ho cantato vittoria troppo presto.codice:$stringa = 'testo [img=12143] testo testo [img=2345] testo [img=1001]'; $stringa = preg_replace('[img=(.*?)]','numero/'.'\\1',$stringa); echo $stringa;![]()
codice:$n = preg_match_all($exp, $word, $match, PREG_PATTERN_ORDER); for ($j = 0; $j < $n; $j++) { $word = str_replace($match[0][$j], ..., $word); }
Il contrario, ottengo solo i numeri, il che non è proprio quello che voglio io.Originariamente inviato da nicola75ss
Scusa, ma così non perdi tutti i numeri?
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.
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...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.![]()
Risultato:
'testo [img].../immagine_12143[/img] testo testo [img].../immagine_2345[/img] testo [img].../immageine_1001[/img]
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;