Visualizzazione dei risultati da 1 a 9 su 9

Discussione: riconoscere i link

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    390

    riconoscere i link

    Allora....

    io ho una form con un campo di testo che viene salvato sul database,

    codice:
    <input name="testo" type="text" id="testo">

    facciamo finta che io in questo campo di testo ci scriva :

    ciao a tutti visitate il mio sito http://www.mio.it oppure mandatemi una mail a alessio@email.it e se avete tempo andate a visitare www.ciao.it



    Lo script prima di reggistrare il testo sul database deve inserire al posto di :

    codice:
    http://www.mio.it viene trasformato in       http://www.mio.it

    ed


    codice:
    alessio@email.it viene trasformato in alessio@email.it

    in fine


    codice:
    www.ciao.it viene trasformato in             www.ciao.it


    quindi sul database verrebbe inserito :

    codice:
    ciao a tutti visitate il mio sito http://www.mio.it oppure mandatemi una mail a alessio@email.it e se avete tempo andate a visitare www.ciao.it

    capito???
    se è possibili farmi un esempio di tutto lo script funzionante.

    Ciao Grazie

  2. #2
    Ciao,
    uno script rudimentale (ma nel tuo caso funziona) potrebbe essere questo:

    <?php
    $stringa = "ciao a tutti visitate il mio sito http://www.mio.it oppure mandatemi una mail a alessio@email.it e se avete tempo andate a visitare www.ciao.it";
    // indirizzi
    $stringa = preg_replace('/(\s*)([^\s]*www[^\s]*)(\s*)/','\\1\\2\\3', $stringa);
    // email
    $stringa = preg_replace('/(\s*)([^\s]*@[^\s]*)(\s*)/','\\1\\2\\3', $stringa);

    echo $stringa;
    ?>

    NOn so per ora se ci siano casi in cui fallisca perchè non ci ho pensato molto.
    Fammi sapere.
    http://www.beavermag.it

  3. #3
    Tutto lo script è veramente un casino ed ora non ho tempo. Ti spiego semplicemente che devi usare le funzioni che ti prendono porzioni di stringhe (come substr) e quelle che ti restituiscino la posizione di una sottostringa in una stringa (come strpos) ed infine quelle che rimpiazzano parti di stringhe (come str_replace).

    E' uno script molto utile come esercizio, prova a farlo da solo.

    Cmq ti sconsiglio di salvare il codice html nel database altrimenti sei costretto (nel caso dovessi aggiornare un campo) a non poter eliminare i caratteri < e > che ti rendono vulnerabile all'inserimento di codice da parte dei tuoi utenti (immagina un javascript che ti kiude la pagina non appena aperta). Ti conviene +ttosto farti una funzione che ti formatta gli url una volta che estrai la stringa dal database e la metti in output!
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    390

    x biamat

    biamat

    in teoria l' esempio che mi hai fatto dovrebbe funzionare l' unica cosa ci dovresti inserire

    target="_blank" class="link"

  5. #5
    Hai ragione! Non ci avevo proprio fatto caso ma basta aggiungere il pezzetto che manca nelle due regular expression.
    Ciao
    http://www.beavermag.it

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    390

    scusa

    scusa però il problema che io non so dove e come vanno inserite, potresti farlo tu?

    Scusa e grazie

  7. #7
    <?php
    $stringa = "ciao a tutti visitate il mio sito http://www.mio.it oppure mandatemi una mail a alessio@email.it e se avete tempo andate a visitare www.ciao.it";
    // indirizzi
    $stringa = preg_replace('/(\s*)([^\s]*www[^\s]*)(\s*)/','\\1\\2\\3', $stringa);
    // email
    $stringa = preg_replace('/(\s*)([^\s]*@[^\s]*)(\s*)/','\\1\\2\\3', $stringa);

    echo $stringa;
    ?>

    Sulla mail non ho messo il target che tanto non serve.
    Se hai problemi fammi sapere.
    http://www.beavermag.it

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    390

    ultima cosa

    Scusa questo funziona nel caso io scrivessi www.mio.it e alessio@email.it ma se scrivo http://www.mio.it non funziona????

    Ciao e scusami per il disturbo

  9. #9
    No dovrebbe funzionare ugualmente!
    Le espressioni regolari che ho scritto cercano stringe di questo tipo:
    un spazio (o l'inizio della riga), una serie di caratteri che non sono uno spazio, la stringa www o @, una serie di caratteri che non siano spazi, uno spazio o la fine della stringa.
    E convertono le stringhe trovate in quello da te richiesto.
    http://www.beavermag.it

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.