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

    preg_replace e numerose occorrenze

    mi serve di trasformare
    codice:
    [url ]www.html.it[ /url]
    in
    codice:
    www.html.it
    e ho realizzato questa exp reg
    codice:
    $text = preg_replace("/(\[url\])(http:\/\/)?(.+)(\[\/url\])/i", "\\3" , $text);
    Tutto ok fino a quando non ho sulla stessa riga due url, perchè
    codice:
    [url ]www.html.it[ /url] è un bel sito ma mai quanto [url ]pro.html.it[ /url]
    me lo trasforma in qualcosa come
    codice:
    www.html.it è un bel sito ma mai quanto pro.html.it
    che è ovviamente inutilizzabile
    in pratica se non ho capito male preg_replace analizza una riga alla volta e mettendo .+ tra [ url] e [ /url] lui mi seleziona il primo e l'ultimo della riga, mentre io vorrei che li selezionasse a coppie...

    come posso risolvere? :master:

  2. #2
    ho idea che ti convenga fare una funzione tu, che ricerchi i tag http://, cattturi il testo fino a qu...one di tutti i con </a>

  3. #3
    ho idea che ti convenga fare una funzione tu, che ricerchi i tag *url*, cattturi il testo fino a quando non trova la chiusura e poi con str_replace sostituisci i tag di chiusura con </a>.

  4. #4
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    codice:
    $text = "[url ]www.html.it[ /url] ciao ciao [url ]www.repubblica.it[ /url]";
    $text = preg_match_all( "/(\[url\])(http:\/\/)?(.+)(\[\/url\])/Ui", $text, $ris ); 
    foreach( $ris[3] as $link )
    	echo "<a href=\"http://{$link}\">{$link}</a>
    ";

    think simple think ringo

  5. #5
    non immagini quanto ti stia adorando
    per curiosità cosa fa /U?

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.