Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 40

Discussione: Riconoscere i link

  1. #11
    Eccomi! Più o meno ho capito, ma come si fa?

  2. #12
    Eccomi! Più o meno ho capito, ma come si fa?

  3. #13
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    96
    puoi farlo con mysql_fetch_assoc (con MySQL ovviamente...):

    a questo punto hai un array $testi con indice uguale al nome del campo. Fai:

    $risultato = mysql_query(bla bla bla);
    while ($testi = mysql_fetch_assoc($risultato)){
    preg_match("/(www)\.([^[:blank:]]+)/i", $testi['link'] , $match);
    echo "<a href=\"http://".$match[0]."\">".$match[0]."</a>";
    }

    occhio: nel colorato in rosso ho posto $testi['link']ponendo che 'link' sia il nome del campo nel db in cui hai il testo con gli indirizzi da linkare...
    Prova, e poi dimmi. :

  4. #14
    codice:
    preg_match("/(www)\.([^[:blank:]]+)/i", $testo, $match);
    $testo = str_replace($match[0], "<a href=\"http://".$match[0]."\" target=_blank>".$match[0]."</a>", $testo);
    E' andato così... grazie

  5. #15
    Volendo far riconoscere altre sottostringhe, es. http:// ?

  6. #16
    Aiutooooooooooooooooooo

  7. #17
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    96
    ah, non avevo cpaito il problema.
    per usare altre sottostrighe di riconoscimento basta metterle nell'espressione regolare.
    Puoi anche usare dei delimitatori, ad es:
    ::www.ciao.it::, lo cercheresti così...

    preg_match("/:[^:]+)::/i", $stringa, $match);
    echo "<a href=\"http://".$match[1]."\">".$match[1]."</a>";

    leggiti questo tutorial:
    http://freephp.html.it/articoli/view...sp?id=69&pag=1

    e studia le funzioni preg_match e preg_match_all sul mauale PHP

  8. #18
    Originariamente inviato da giohappy
    ah, non avevo cpaito il problema.
    per usare altre sottostrighe di riconoscimento basta metterle nell'espressione regolare.
    Puoi anche usare dei delimitatori, ad es:
    ::www.ciao.it::, lo cercheresti così...

    preg_match("/:[^:]+)::/i", $stringa, $match);
    echo "<a href=\"http://".$match[1]."\">".$match[1]."</a>";

    leggiti questo tutorial:
    http://freephp.html.it/articoli/view...sp?id=69&pag=1

    e studia le funzioni preg_match e preg_match_all sul mauale PHP
    Proverò, grazie

  9. #19
    Niente, non mi viene!

    Allora, presupponendo che per www ho fatto:

    codice:
    preg_match("/(www)\.([^[:blank:]]+)/i", $testo, $match);
    $testo = str_replace($match[0], "<a href=\"http://".$match[0]."\" target=_blank>".$match[0]."</a>", $testo);
    devo fare la stessa cosa per http:// https ftp.
    Poi ho trovato:

    codice:
    $mail = "mail@sito.it";
    $testo eregi_replace("^([a-z0-9\._-]+)(@[a-z0-9\.-_]+)(\.{1}[a-z]{2,6})$", "<a href=\"mailto:\\1\\2\\3\">\\1\\2\\3</a>", $mail);
    va bene per una stringa precisa, ma io devo appliccarla su un testo intero.

    Non è che puoi ancora aiutarmi?

  10. #20
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    96
    il metodo di ricerca usato per http://, www, https, ftp, vale anche per le e-mail... nel senso che

    $mail = "mail@sito.it";
    $testo = eregi_replace("^ ([a-z0-9\._-]+)(@[a-z0-9\.-_]+)(\.{1}[a-z]{2,6})$ ", "<a href=\"mailto:\\1\\2\\3\">\\1\\2\\3</a>", $mail);

    basta che togli la ricerca ad inizio stringa e fine stringa, la quale indica una ricerca sull'esatta stringa (ovvero che dall'inizio alla fine ci sia solo un "mail@sito.it", capito?
    quindi sarà:

    $mail = "ciao mail@sito.it ciao";
    $testo = eregi_replace("([a-z0-9\._-]+)(@[a-z0-9\.-_]+)(\.{1}[a-z]{2,6}) ", "<a href=\"mailto:\\1\\2\\3\">\\1\\2\\3</a>", $mail);
    echo $testo;

    vedrai che funziona!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.