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

    [PHP] glossario automatico

    Ciao a tutti,
    nel mio nuovo progettino sto creando una sezione glossario con termini inseriti, naturalmente, in mysql.

    Nei vari articoli compaiono ripetutamente delle parole che sono contenute nel glossario dei termini, e le visualizzo con tag acronym, per linkarle alla spiegazione.
    Potete prendere come riferimento il sito di weppos http://rss-world.info tanto per capire di cosa sto parlando.

    Domanda:
    io vorrei fare in modo che le parole messe sotto tag acronym siano linkate in automatico (o semi automatico) alla voce corrispondente nel glossario, questo per facilitare la gestione degli articoli inseriti da CMS.

    Mi serve solo il modus operandi, per avere un'idea.

    Grazie a tutti quelli che risponderanno (Weppos soprattutto visto che l'idea l'ho presa da lì )
    www.touring-car.it

  2. #2
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    A. fai una query per i soli termini del glossario + i relativi id se esistono
    B. ti crei un array in cui compaiono quei termini e uno con quei termini inseriti in un tag <A> che rimanda al glossario per quel termine
    C. usi la funzione str_replace con i due array

  3. #3
    Originariamente inviato da chris
    A. fai una query per i soli termini del glossario + i relativi id se esistono
    B. ti crei un array in cui compaiono quei termini e uno con quei termini inseriti in un tag <A> che rimanda al glossario per quel termine
    C. usi la funzione str_replace con i due array
    Grazie della risposta chris.

    A) OK
    B) il singolo elemento dell'array link dovrebbe avere una struttura del tipo:

    giusto?

    C)Questo passaggio mi sfugge.
    Supponiamo che inserisca dall'interfaccia di gestione articoli questo testo:

    testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo vocabolo testo testo testo testo testo testo testo testo testo .

    Come faccio a fare in modo che "vocabolo" venga trasformato in link+acronym tramite gli array che mi sono costruito? Ok per la funzione str_replace, ma non riesco a capire come applicarla in automatico a quel termine specifico
    www.touring-car.it

  4. #4
    up
    www.touring-car.it

  5. #5
    up
    www.touring-car.it

  6. #6
    Ci riprovo per l'ultima volta :rollo:

    nessuno ha mai fatto questo tipo di automazione?
    www.touring-car.it

  7. #7
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    codice:
    $sql = "Query che tira fuori tutti i termini del glossario";
    $rs = @mysql_query($sql);
    
    $Termine = array();
    $LinkTermine = array();
    while( $row = @mysql_fetch_assoc($rs) ){
        $Termine[] = $row['termine'];
        $LinkTermine[] = '<a href="http://miosito/glossario/' .
                         $row['termine'] . '#"><acronym title="' .
                         $row['titoloTermine'] . '">' . 
                         $row['termine'] . '</acronym></a>';
    }
    
    $testoPagina = str_replace($Termine, $LinkTermine, $testoPagina);
    Più o meno qualcosa del genere

  8. #8
    Ho lo stesso problema di automazione.

    Il problema di questo script è che manda in pappa eventuale codice HTML esempio se nel glossario inserisco un termine "table" questo verrà sostituito anche nell'html.

    esiste un modo (senza perdere il codice html) per sostituire le parole del testo ?

    grazie mille
    www.funkazzisti.it - The Real Venetian Funky Style
    www.feempandora.it - Progetto di Ricerca sullo sviluppo sostenibile
    www.e-makina.it - Web Design

  9. #9
    NO! non utilizzate str_replace oppure vi verranno fuori dei risultati PAZZESCHI.

    Vi faccio un esempio, nel glossario ho:

    ROSA = fiore profumato
    ROS = indice finanziario
    OS = sistema operativo
    ROSALIA = nome di persona

    se fate str_replace(); su una frase che contiene ROSALIA vi verrà fuori che i link NON vengono effettuati tutti in un passaggio... ma a passaggi multistrato, quindi dopo il primo passaggio avremo:

    <a>ROSA</a>LIA

    dopo il secondo

    <a><a>ROS</a>A</a>LIA

    al terzo

    <a><a>R<a>OS</a>A</a>LIA

    e al quarto non accadrà nulla... perchè la parola rosalia "unita" non esiste più... esiste una rosalia staccata da una serie di LINK.

    Il sistema con cicli di array e str_replace NON FUNZIONA e non deve essere adottato.

    L'unico modo per fare una cosa del genere è utilizzare le espressioni regolari!

    Cercate sul forum... ce ne sono a bizzeffe.

  10. #10
    1) Crea l'array contenente i termini da sostituire.
    2) Ordinali per lunghezza
    3) passali dentro una ereg

    prova ad iniziare da qualcosa del genere:

    Codice PHP:
    $testoconglossario ereg_replace($parole_da_sostituire,"<a href=\"http://www.tuoglossario.com/query.php?id=\\0\">",$testo); 
    puoi complicare l'ereg richiedendo ad esempio di non riscrivere termini di parole composte ma solo di parole dove trovi uno spazio come lettera che precede/che segue.



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.