Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Evidenziare parole e linkarle basandosi su un db

    Titolo criptico ma non mi veniva niente di meglio. Passiamo alla spiegazione del problema.
    Avete mai visto quei siti che evidenziano alcune parole linkandole ad una risorsa (tipo siti sponsorizzati, altre risorse, ecc.)? Bene, mi sapreste spiegare il meccanismo di funzionamento?

    Quello che vorrei realizzare è una sorta di dizionario. In pratica il testo dovebbe essere analizzato e le parole trovate nel db evidenziate in modo che quando ci si passa sopra si veda un box con dentro la spiegazione stessa del termine. Detta così sembrerebbe semplice ma in pratica le idee che mi sono venute per implementera e una cosa del genere sono molto molto dispendiose in termini di risorse. Avete in mente qualche soluzione?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  2. #2
    Premetto che non mi sono mai cimentato in una cosa simile quindi la butto li: io farei in questo modo, ad inizio pagina mi creo una stringa con tutte le parole (estrai dal db e implodi) in modo da costruirti una regexp (parola1|parola2| ... |parola2000).
    definirei un array associativo $words vuoto.
    Usando replace in modalità eval userei una funzione di callback passando la parola matchata alla funzione.
    Tale funzione controlla se la parola esiste nell'array allora restituisce la definizione, altrimenti esegue una query per estrarla e la inserisce nell'array. Infine resitituisce alla preg_replace la parola con la definizione.
    Io proverei così, poi dipende dalle dimensioni del db e dal numero delle parole.
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  3. #3
    Oppure potresti farlo solo quando salvi l'articolo nel database. Quando lo salvi analizzi il testo e ti estrai gli id delle parole chiave contenute e te le salvi in un campo, così ogni volta che carichi l'articolo estrai solo il numero corretto di parole+definizione. E magari aggiungi dei tag alle parole chiave.
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  4. #4
    Solo quando salvo non sarebbe un buon nmodo di procedere perchè se volessi inserire altre parole non poteri aggiornare gli altri articoli se non analizzandoli di nuovo tutti quanti.

    Per la prima soluzione sarebbe possibile anche se invece delle regex si potrebbe usare uno str_replace. Oppure, ancora meglio si potrebbe far fare il tutto a js.

    Si estraggono i termini dal db, si memorizzano in una array che viene passato a js e poi è il client stesso che analizza la pagina e provvede a formattare le parole trovate con il link corrispondente. Mha, attendo altre soluzioni possibili.

    Intanto grazie a te Anªkin! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  5. #5
    La mia soluzione era alternativa all'estrarre l'intero db (parola+definizione). Se estrai l'intero db, ok, potresti anche usare str_replace, ma avresti 2 incovenienti, non è case insensitive (a meno che non usi php5) e poi non puoi matchare la parola esatta, con il rischio di evidenziare parole che non vuoi.
    Per quanto riguarda javascript, io non farei un passaggio un più, tanto oramai l'array l'hai gia caricato, e un semplice replace (anche fosse una preg) non credo possa appesantire più di tanto il server, anche considerando connessioni simultanee.
    Ma non avendo dati scientifici alla mano potrei sbagliarmi.
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  6. #6
    Il fatto è che non sono tanto convinto si debba usare php per fare tutto. Se non sbaglio adWords di Google fa la stessa cosa e quello che si usa non è PHP! O almeno credo!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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.