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

    in un testo, sostituire gli href (testuali) con <a>

    salve ragazzi. ho questo testo:

    "se volete potete visitare il mio myspace: www.ttttt"

    e vorrei sostituirlo con:

    "se volete potete visitare il mio myspace:
    www.tttttt"


    ancora sono scarso con le espressioni regolari e affini, sono anni che ci ... BATTO LA TESTA!
    si vivono molte vite e si muore una volta sola

  2. #2
    UP
    si vivono molte vite e si muore una volta sola

  3. #3
    UP
    si vivono molte vite e si muore una volta sola

  4. #4
    up

    e' così complicato? :O
    si vivono molte vite e si muore una volta sola

  5. #5
    up
    si vivono molte vite e si muore una volta sola

  6. #6
    up
    si vivono molte vite e si muore una volta sola

  7. #7
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Hai provato a trovarla da solo una soluzione?

    Comunque innanzitutto ti conisglio questo sito http://regexlib.com/.

    Poi visto che ero in vena mi sono fatto l'esercizietto che tu hai proposto, ed ecco il risultato:

    codice:
    <?php
    // Prima soluzione
    $stringa = "Visita il mio sito www.html.it oppure quello del mio amico http://www.google.it/";
    
    echo $stringa."
    ";
    
    $regex = "((http\://|https\://|ftp\://)|(www.))+(([a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(/[a-zA-Z0-9%:/-_\?\.'~]*)?";
    
    $stringa2 = preg_replace('#'.$regex.'#', "<a href=\"$0\">$0</a>", $stringa);
    
    echo $stringa2."
    ";
    
    // soluzione 2
    
    /**
     * Passando un link a questa funzione controlla che inizi con il protocollo
     * http, in caso contrario modifica la stringa e la ritorna con il protocollo http aggiunto.
     *
     * @param string URL
     * @return string URL modificato
     */
    
    function addhttp($webpage) {
    
      $pos = strpos($webpage, 'http://');
    
      if($pos === false && $webpage!= '') {
    
        $webpage = "http://".$webpage;
    
      }
    
      return $webpage;
    
    }
    
    preg_match_all('#'.$regex.'#', $stringa, $risultato);
    
    
    
    $cerca = $risultato[0];
    
    $sostituisci = array();
    
    foreach($cerca as $valore) {
    
      $sostituisci[] = ''.addhttp($valore).'';
    
    }
    
    $stringa2 = str_replace($cerca, $sostituisci, $stringa);
    
    echo $stringa2."
    ";
    ?>
    Se provi il codice vedrai che la prima soluzione è più compatta ma fallisce nel caso in cui tu abbia un link senza l'http davanti. La seconda è un mix di espressioni regolari e str_replace.

    Ciao

    edit:
    Tieni presente che nel codice che ho postato la prima stringa è testuale, ma evidentemente il forum usa una funzione simile a quella che ti ho postato per trasformarli gli url in link.

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.