Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    riconoscere i link all'interno di una textarea

    Ciao a tutti,

    ho un bel problema.
    Devo realizzare un applicazione che serve contare dei click sui link di una e-mail in formato testo.
    Il testo del messaggio viene scritto e generato dall'utente attraverso una TEXTAREA interna ad una form che passa i parametri attraverso il metodo $_POST.

    Ogni e-mail puo' contenere una serie ipotizzabile infinita di LINK testuali e quindi quello di cui ho bisogno è di un codice che mi legga l'interno della TEXTAREA e che in essa sappia riconoscere i link ed aggiungerci qualche parametro come variabile ad esempio "?mail_numero=1&id_link=9"

    Utilizzo Php, mysql, html...e potenzialmente javascript anche se quest'ultimo non lo padroneggio granchè.

    Grazie a tutti.

  2. #2
    Ciao,
    ma come fa l'utente a inserire un link? Scrive qualcosa tipo [a]...[/a] oppere [link]...[/link] o cose del genere?
    Se è così basta individuare questi pseudotag, no?
    Voglio dire che qualsiasi sia il metodo utilizzato per marcare un link si tratterà pur sempre di una stringa di testo riconoscibile e trattabile sia da js che da php con le infinite funzioni di trattamente stringhe che mettono a disposizione.
    O non ho capito?
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  3. #3
    L'utente non ha la benchè minima idea dei tag html...praticamente a lui dovrà sembrare di scrivere un testo in word e quando metterà i link sul suo testo metterà semplicemente il dominio del sito con la pagina che gli interessa...

    Dunque semplicemente l'utente dovrà posizionare i suoi link in questo modo. ti espongo un testo tipo:
    ---------------------------------------------------------------------------------------------------------
    Ciao, utente per sapere di piu sui nostri prodotti clicca nel link seguente:
    www.miosito.com/prodotti.php


    cordiali saluti.

  4. #4
    Ciao,
    visto che si tratta di un testo puro e semplice c'è poco da fare, devi stabilire una regola e comunicarla ai tuoi utenti. Questo non vuol dire che debbano imparare l'html ma solo che devono adeguarsi ad uno standard che permetta a te di capire se ciò che hanno scritto è un testo o un link.

    La regola potrebbe, per esempio essere questa
    - Tutti i link devono cominciare con www e finire con uno spazio

    Questa regola però non sarebbe molto versatile perché, per esempio non si adatterebbe agli indirizzi mail.

    Una regola migliore potrebbe essere
    - Tutti i link devono essere racchiusi fra parentesi quadre, così: [www.dominio.com] oppure [http://dominio.com] oppure [indirizzo mail] eccetera.

    Questa sarebbe già più versatile.

    Dal tuo punto di vista però potrebbe essere meglio distinguere diversi tipi di link chiedendo agli utenti di utilizzare marcatori diversi (non chiamarli tag se no si spaventano), per esempio potresti dir loro:

    - gli indirizzi "normali" devono essere racchiusi fra i marcatori [link] e [/link], così
    [link]www.indirizzo.it[/link]

    - gli indirizzi su connessione https devono essere racchiusi fra i marcatori [links] e [/links], così:
    [links]https://indirizzo.com[/links]

    - gli indirizzi mail fra i marcatori [mail] e [/mail]

    - i domini di terzo livello fra [scegli tu] e [/scegli tu]

    eccetera.

    Una cosa del genere ti permetterebbe in fase di trattamento del testo di avere a disposizione tutti gli elementi e nello stesso tempo non sarebbe troppo difficile per gli utenti che sicuramente non ne sanno niente di informatica e di web ma in genere non sono del tutto cretini.

    Gli fai una bella legenda a fianco della textarea e sei a posto.

    Che ne pensi?
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  5. #5
    Aggiungo una cosa,
    potresti fare come fa questo sito, anche qui se scrivo www.dominio.com mi compare automaticamente il link e questo viene fatto probabilmente cercando le stringhe www, http, https, le chiocciole ecc... e abbinando questa ricerca ad altre regole come la presenza di punti e slash e di stringhe come php, html, asp ecc...

    Però questo è un metodo che rischia di non funzionare sempre ed è piuttosto complesso da implementare. E' decisamente più facile che siano gli utenti a decidere cosa deve essere considerato link e cosa no
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  6. #6
    Penso che seguirò il tuo consiglio.

    grazie per l'aiuto anche se onesetamente non so proprio come riuscire a leggere l'interno della stringa attraverso i codici.

    potresti rispondere anche a questo quesito per favore?

    grazie...poi ti offro un caffè!

  7. #7
    Codice PHP:

    if ( ! function_exists('auto_link'))
    {
        function 
    auto_link($str$type 'both'$popup FALSE)
        {
            if (
    $type != 'email')
            {
                if (
    preg_match_all("#(^|\s|\()((http(s?)://)|(www\.))(\w+[^\s\)\<]+)#i"$str$matches))
                {
                    
    $pop = ($popup == TRUE) ? " target=\"_blank\" " "";

                    for (
    $i 0$i count($matches['0']); $i++)
                    {
                        
    $period '';
                        if (
    preg_match("|\.$|"$matches['6'][$i]))
                        {
                            
    $period '.';
                            
    $matches['6'][$i] = substr($matches['6'][$i], 0, -1);
                        }

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

            if (
    $type != 'url')
            {
                if (
    preg_match_all("/([a-zA-Z0-9_\.\-\+]+)@([a-zA-Z0-9\-]+)\.([a-zA-Z0-9\-\.]*)/i"$str$matches))
                {
                    for (
    $i 0$i count($matches['0']); $i++)
                    {
                        
    $period '';
                        if (
    preg_match("|\.$|"$matches['3'][$i]))
                        {
                            
    $period '.';
                            
    $matches['3'][$i] = substr($matches['3'][$i], 0, -1);
                        }

                        
    $str str_replace($matches['0'][$i], safe_mailto($matches['1'][$i].'@'.$matches['2'][$i].'.'.$matches['3'][$i]).$period$str);
                    }
                }
            }

            return 
    $str;
        }

    codice preso dall'helper url di codeigniter, se lanci la funzione auto_link() su di un testo questa trasforma tutti i link e gli indirizzi email in link cliccabili... vedi se fa' al caso tuo, mi sembra un ottimo punto di partenza...
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  8. #8
    Ora ci lavoro un po' e più tardi ti posto un esempio. Php va bene vero?
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  9. #9
    siamo nel forum PHP
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  10. #10
    Non avevo visto la risposta di king size slim.

    A quanto pare stavo inventando l'acqua calda
    quindi lascio perdere.

    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.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.