• User Newbie

    replace parole composte

    salve,
    sono nuovo di qui quindi devo entrare in pieno nei meccanismi di questo forum.
    Ho un problema con un codice.
    In pratica in un testo ho bisogno di modificare alcune parole in modo da linkarle verso un glossario. Ho usato str_replace. Il codice funziona bene solo che ho difficoltà con le parole composte.
    Ad esempio:
    ammasso e superammasso.
    Il codice linka perfettamente ammasso. Al contrario, superammasso lo trasforma cosi: super non linkato + ammasso linkato.
    La mia domanda è: come far capire al codice che superammasso è una parola esatta e che quindi va linkata tutta?

    Qui di seguito il codice che utilizzo:

    [PHP]<?
    $cerca = array("ammasso","evoluzione","selezione","alieno","carbonio","universo","UFO","galassia","anno luce");

    $sostituisci = array(); 
    for ($parole=0; $parole<= (count($cerca)-1); $parole++){ 
    $sostituisci[$parole]= "<a class=\"glossario\" href=\"glossario.php#$cerca[$parole]\" target=\"_blank\">$cerca[$parole]</a>"; 
     
    } 
     
    do{ 
    $stato++; 
    if ($stato==1){ 
    echo "<h2>$titoli[1]</h2>"; 
    } 
    else{ 
    echo "<h3>$titoli[$stato]</h3>"; 
    
    echo str_ireplace($cerca, $sostituisci, $testo[$stato]); 
         
    } 
    } 
    while($stato==(count($titoli))); 
    

    ?> [/PHP]
    Il codice fa riferimento a un testo che ho dovuto dividere in varie parti per evitare che i titoli dei paragrafi vengano linkati.
    Mi son complicato la vita ma cosi funziona. Se c'è un'altra scorciatoia è ben accetta.:)


  • Super User

    Devi utilizzare le espressioni regolari per fare operazioni del genere