Visualizzazione risultati 1 fino 13 di 13

Discussione: Convertire URL in link

  1. #1
    L'avatar di ilmiocaos
    ilmiocaos non è connesso Utente
    Data registrazione
    03-06-2009
    Residenza
    Terra
    Messaggi
    226

    Predefinito Convertire URL in link

    Ciao a tutti, ho un piccolo grande problema, avrei una chat, e vorrei fare in modo che quando un qualcuno scrive un URL questo si converta automaticamente in link come per esempio qui nel forum quando invii un messaggio ti traduce i link presenti nel test automaticamente, ah un ultima cosa, vorrei che il targhet fosse _blank.

    Grazie mille a tutti!! ^_^
    Quando il saggio indica la luna, lo sciocco guarda il dito - Proverbio Cinese



    Fatti Pubblicità sul mio sito Gratuitamente!: PageYou

  2. #2
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Prova così:

    Codice PHP:
    function url2link($testo)
    {
    // Stringa contenente l'espressione regolare da confrontare
    $trova = "((http://|ftp://)[a-zA-Z0-9-_.]+[a-zA-Z0-9/.?&=]+)";

    // Stringa contenente il formato del link
    $nuovo = "<a href=\"$0\" target=\"_blank\"> $0 </a>";

    // La funzione ritorna il testo modificato
    return preg_replace($trova, $nuovo, $testo);
    }
    Basta che lo utilizzi in questo modo:

    Codice PHP:

    $valore
    = "Ecco il mio sito http://miki92.altervista.org spero vi piaccia!";

    echo
    url2link($valore);
    Il codice stamperà:

    Codice HTML:
    Ecco il mio sito <a href="http://miki92.altervista.org" target="_blank">http://miki92.altervista.org</a> spero vi piaccia!
    Apprezzi l'aiuto? Offrimi un caffè!

  3. #3
    L'avatar di ilmiocaos
    ilmiocaos non è connesso Utente
    Data registrazione
    03-06-2009
    Residenza
    Terra
    Messaggi
    226

    Predefinito

    mi da questo errore: Cannot redeclare url2link() (previously declared in etc.etc)

    POtresti ridarmi l'esempio con le mie variabili in modo che capisca come impostarlo? io uso $text per il testo. Ma non ho capito dove va messo nel codice e come va chiamato in caso di un echo.
    Quando il saggio indica la luna, lo sciocco guarda il dito - Proverbio Cinese



    Fatti Pubblicità sul mio sito Gratuitamente!: PageYou

  4. #4
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Codice PHP:
    <?php

    function url2link($testo)
    {
    // Stringa contenente l'espressione regolare da confrontare
    $trova = "((http://|ftp://)[a-zA-Z0-9-_.]+[a-zA-Z0-9/.?&=]+)";

    // Stringa contenente il formato del link
    $nuovo = "<a href=\"$0\" target=\"_blank\"> $0 </a>";

    // La funzione ritorna il testo modificato
    return preg_replace($trova, $nuovo, $testo);
    }

    echo
    url2link($text);

    ?>
    Apprezzi l'aiuto? Offrimi un caffè!

  5. #5
    L'avatar di ilmiocaos
    ilmiocaos non è connesso Utente
    Data registrazione
    03-06-2009
    Residenza
    Terra
    Messaggi
    226

    Predefinito

    Da questo errore:

    Citazione Originalmente inviato da php
    Fatal Error: Cannot redeclare url2link() (previously declared in etc.etc)
    L'errore corrisponde a quest parte di codice (prima riga del tuo codice)

    Codice PHP:
    function url2link($testo)
    Ultima modifica di ilmiocaos : 17-01-2010 alle ore 00.20.19
    Quando il saggio indica la luna, lo sciocco guarda il dito - Proverbio Cinese



    Fatti Pubblicità sul mio sito Gratuitamente!: PageYou

  6. #6
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Probabilmente hai scritto due volte la funzione, fai così:

    Codice PHP:
    <?php

    if(!function_exists("url2link")){
    function
    url2link($testo)
    {
    // Stringa contenente l'espressione regolare da confrontare
    $trova = "((http://|ftp://)[a-zA-Z0-9-_.]+[a-zA-Z0-9/.?&=]+)";

    // Stringa contenente il formato del link
    $nuovo = "<a href=\"$0\" target=\"_blank\"> $0 </a>";

    // La funzione ritorna il testo modificato
    return preg_replace($trova, $nuovo, $testo);
    }}

    echo
    url2link($text);

    ?>
    Apprezzi l'aiuto? Offrimi un caffè!

  7. #7
    L'avatar di ilmiocaos
    ilmiocaos non è connesso Utente
    Data registrazione
    03-06-2009
    Residenza
    Terra
    Messaggi
    226

    Predefinito

    Non da errore ma non converte, si può vedere qui
    http://ilmiocaos.altervista.org/function/chat.php
    Quando il saggio indica la luna, lo sciocco guarda il dito - Proverbio Cinese



    Fatti Pubblicità sul mio sito Gratuitamente!: PageYou

  8. #8
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    A me funziona correttamente. Potresti postare l'intero codice della tua pagina?
    Apprezzi l'aiuto? Offrimi un caffè!

  9. #9
    L'avatar di ilmiocaos
    ilmiocaos non è connesso Utente
    Data registrazione
    03-06-2009
    Residenza
    Terra
    Messaggi
    226

    Predefinito

    L'URL compare ma non è cliccabile...
    Quando il saggio indica la luna, lo sciocco guarda il dito - Proverbio Cinese



    Fatti Pubblicità sul mio sito Gratuitamente!: PageYou

  10. #10
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    ilmiocaos io sono un tipo che non si tira mai indietro se nelle mie possibilità c'è quella di aiutare il prossimo o chi me ne fa richiesta, però ciò che non sopporto e che se io ti chiedo il codice qui tu me lo invii in via privata.

    Se vuoi assistenza devi postare nel giusto topic. Per questa volta faccio ti aiuto lo stesso, ma la prossima volta che si verifica una cosa del genere me ne starò da parte facendo un eccezione.

    Riguardo al tuo problema, è che tu hai modificato solo parte della funzione che ti ho postato io e quindi diciamo c'era una variabile non dichiarata che faceva sballare tutto, inoltre a pesare su ciò c'era anche l'inserimento errato della funzione nel codice e del suo richiamo.

    Ecco il codice completo e corretto:

    Codice PHP:
    <?php

    $file
    = fopen("chat.txt","r+");
    $text = fread($file,filesize("chat.txt"));
    fclose($file);
    $messages = explode("|^|",$text);
    if (
    $message&&$nick) {
    if (
    strpos($message,'|^|')!==false||strpos($message,'^|^')!==false||strpos($nick,'|^|')!==false||strpos($nick,'^|^')!==false) die("Non puoi inserire nel messaggio o nel nick '|^|' e '^|^'");
    if (
    count($messages)==$max)
    array_pop($messages);
    array_unshift($messages,$nick.'^|^'.$message);
    $file = fopen("chat.txt","w");
    for (
    $a=0;$a<count($messages);$a++) {
    $value = $messages[$a];
    if (
    $messages[$a+1]) $value .= '|^|';
    if (
    $value&&$value!='|^|')
    fwrite($file,$value);
    }
    }
    clearstatcache();
    $file = fopen("chat.txt","r+");
    $text = fread($file,filesize("chat.txt"));
    fclose($file);
    $messages = explode("|^|",$text);
    $messages = array_reverse($messages);

    //Spazio per la funzione Link al posto dell'URL

    function url2link($testo)
    {
    // Stringa contenente l'espressione regolare da confrontare
    $trova = "((http://|ftp://)[a-zA-Z0-9-_.]+[a-zA-Z0-9/.?&=]+)";

    // Stringa contenente il formato del link
    $nuovo = "<a href=\"$0\" target=\"_blank\"> $0 </a>";

    // La funzione ritorna il testo modificato
    return preg_replace($trova, $nuovo, $testo);
    }

    // Continuo script personale

    for ($a=0;$a<count($messages);$a++) {
    $val = explode('^|^',$messages[$a]);


    $text = htmlentities($val[1]);
    $text = url2link($text);

    $text = str_replace(":)","<img src='http://ilmiocaos.altervista.org/emoticons/lol.png' border='0' />", $text);
    $text = str_replace(":(","<img src='http://ilmiocaos.altervista.org/emoticons/sad.png' border='0' />", $text);
    $text = str_replace(":P","<img src='http://ilmiocaos.altervista.org/emoticons/bleee.png' border='0' />", $text);
    $text = str_replace("xd","<img src='http://ilmiocaos.altervista.org/emoticons/xd.png' border='0' />", $text);
    $text = str_replace(":o","<img src='http://ilmiocaos.altervista.org/emoticons/oh.png' border='0' />", $text);

    if (
    $val[0]&&$val[1]) echo "<b>&lt;".htmlentities($val[0])."&gt;</b> ".$text."<br>";
    }
    ?>
    Apprezzi l'aiuto? Offrimi un caffè!

  11. #11
    Guest

    Predefinito

    Io cambierei questo:
    Codice:
    (http://|ftp://)
    in questo:
    Codice:
    (http://|ftp://|https://)
    Almeno converte anche gli url https://ecc

  12. #12
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Si, giusto. Anche se penso sia difficile che qualcuno posti link https
    Apprezzi l'aiuto? Offrimi un caffè!

  13. #13
    L'avatar di ilmiocaos
    ilmiocaos non è connesso Utente
    Data registrazione
    03-06-2009
    Residenza
    Terra
    Messaggi
    226

    Predefinito

    Scusa ma non mi faceva editare e per non fare doppi post te l'ho inviato.
    Quando il saggio indica la luna, lo sciocco guarda il dito - Proverbio Cinese



    Fatti Pubblicità sul mio sito Gratuitamente!: PageYou

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •