• User Attivo

    Da testo a URL clickabile in php

    ciao,
    vorrei trasformare tutte le url presenti in un testo in link.

    www . pippo . it deve trasformarsi in

    [php]

    <a href="http: // www . pippo . it">www . pippo . it</a>

    [/php]ho trovato questo codice in rete ma funziona solo se metto davanti http.

    [php]

    <?php
    // definizione della funzione e parametri
    function testo_in_url($stringa){
    // conversione tramite sostituzione con espressioni regolari

    return preg_replace("~(http|https|ftp|ftps)://(.*?)(\s|\n|,.?!|$)~", "<a href="$1://$2" rel="nofollow">$1://$2</a>$3", $stringa);}
    ?>
    [/php]vorrei che funzionasse sia se trovo www . pippo . it sia se trovo http: // www . pippo . it

    Grazie.
    Saluti.


  • ModSenior

    Ciao,

    prova cosi:
    [php]
    function autolink($str)
    {
    if (preg_match_all("#(^|\s|()((http(s?)://)|(www.))(\w+[^\s)<]+)#i", $str, $matches))
    {
    for ($i = 0; $i < count($matches['0']); $i++)
    {
    $period = '';
    if (preg_match("|.$|", $matches['6']))
    {
    $period = '.';
    $matches['6']
    = substr($matches['6']*, 0, -1);
    }

                    $str = str_replace($matches['0']*,
                                        $matches['1']*.'<a href="http'.
                                        $matches['4']*.'://'.
                                        $matches['5']*.
                                        $matches['6']*.'">http'.
                                        $matches['4']*.'://'.
                                        $matches['5']*.
                                        $matches['6']*.'</a>'.
                                        $period, $str);
                }
            }
            return $str;
    

    }
    [/php]


  • User Attivo

    ok grazie.
    ho risolto cosi:

    [php]
    function testo_in_url($stringa){
    // conversione tramite sostituzione con espressioni regolari
    return preg_replace("/(www) . (.*?).(([.a-z]+))/", "<a href="http:/ /$1.$2.$3 " rel="nofollow" > $1.$2.$3 </a>", $stringa);

                }
    

    [/php]

    che dite va bene?