Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 31
  1. #11
    Utente di HTML.it L'avatar di zoseppe
    Registrato dal
    Jan 2005
    Messaggi
    306
    Sarebbe mia intenzione far si che quando viene visualizzato il testo contenente le mie parole chiave (2 0 3) queste appaiano in neretto.
    ecco, infatti: è quello che sto cercando di fare io! Il problema è che l'hightlight ( io gli cambio anche colore) sembra essere cs...vi posto il codice:
    Codice PHP:

    function hightlight_txt($txt1$txt2)
    {

             
    preg_match_all("#\w{0,}#",$txt1$ris);

             
    $arr $txt2;
             foreach(
    $ris[0] as $parola)
             {
               
    $parola=trim($parola);
               
    $arr str_replace($parola"<font color=\"blue\">[b]$parola[/b]</font>"$arr);
             }




             return 
    $arr;

    $txt1 sono le parole chiave, $txt2 è la stringa dove andarle a cercare (nel mio caso restituita dalla query). Se la parola da ricercare è "fagiano" la query ovviamente mi restituisce tutti i record dove è presente (e confermo è ci) ma l'hightligh viene applicato solo su "fagiano" e non su "Fagiano".....qualche idea?

  2. #12
    Utente di HTML.it L'avatar di zoseppe
    Registrato dal
    Jan 2005
    Messaggi
    306
    Ops....non l'avevo visto, pardon....

  3. #13
    Non so se anche zoseppe abbia provato il codice indicato in quella discussione ma io ottengo sempre lo stesso risultato: si evidenzia in neretto solo la seconda delle due parole chiave inserite o se le parole chiave sono tre la terza. Può essere che il ciclo non funzioni a dovere?

  4. #14
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    $ricerca = "CANE l'Albero giardino ALBERO .riposo";
    preg_match_all('/[^\W_]{4,}/',strtolower($ricerca),$mth); 
    $stringa = "il cane era a riposo sotto l'albero del Giardino";
    $mth[0] = array_unique($mth[0]);
    foreach($mth[0] as $chiave=>$valore)
    	$mth[0][$chiave] = "/\b$valore\b/i"; 
    $stringa = preg_replace($mth[0],"$0",$stringa);
    echo $stringa;

  5. #15
    Utente di HTML.it L'avatar di zoseppe
    Registrato dal
    Jan 2005
    Messaggi
    306
    io l'ho provato e funziona alla grande! Ho "ricopiato" il codice di Nicola sotto forma di funzione, forse "vista" così ti risulta più semplice da usare:
    Codice PHP:
    function hightlight_txt($ricerca$stringa)
    {

          
    $pattern = array("/\b([[:alpha:]]{1,3})\b/i","/'/");
          
    $pattern preg_replace($pattern""$ricerca);

          
    $pattern explode(' ',$pattern); 


           foreach(
    $pattern as $chiave=>$valore)
                if(
    $pattern[$chiave] == '')
            unset(
    $pattern[$chiave]);

           foreach(
    $pattern as $chiave=>$valore)
                
    $pattern[$chiave] = "/\b$valore\b/i";

    $stringa preg_replace($pattern,"<font color=\"blue\">[b]$0[/b]</font>",$stringa);



             return 
    $stringa;

    In $ricerca ci metti le parole chiave, $stringa è invece la stringa dove eseguire la ricerca

  6. #16
    Grazie per la tua puntuale presenza, Nicola.
    Questo è il cosice che io ho inserito:
    codice:
    $ricerca = "grida facciate";
    preg_match_all('/[^\W_]{4,}/',strtolower($ricerca),$mth); 
    $stringa = "Grida a due facciate "Desiderando...il duca di Mantova che li sudditi suoi vivano ";
    $mth[0] = array_unique($mth[0]);
    foreach($mth[0] as $chiave=>$valore)
    	$mth[0][$chiave] = "/\b$valore\b/i"; 
    $stringa = preg_replace($mth[0],"$0",$stringa);
    echo $stringa;
    Il risultato ottenuto è che nella mia stringa si evidenzia solo la parola facciate.
    Scusa se sono troppo insistente: era curiosa di sapere se anche a Zoseppe dà lo stesso risultato e se sono io che ho sbagliato qualcosa.

  7. #17
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    $ricerca = "grida facciate";
    preg_match_all('/[^\W_]{4,}/',strtolower($ricerca),$mth); 
    $stringa = 'Grida a due facciate "Desiderando...il duca di Mantova che li sudditi suoi vivano';
    $mth[0] = array_unique($mth[0]);
    foreach($mth[0] as $chiave=>$valore)
    	$mth[0][$chiave] = "/\b$valore\b/i"; 
    $stringa = preg_replace($mth[0],"$0",$stringa);
    echo $stringa;

  8. #18
    OK, ho capito che sono io l'impedita...
    Il codice "semplificato" di Zoseppe mi dà questo messaggio di errore:
    codice:
    Fatal error: Cannot redeclare hightlight_txt()

  9. #19
    Utente di HTML.it L'avatar di zoseppe
    Registrato dal
    Jan 2005
    Messaggi
    306
    ????? quell'errore non dipende dal codice della funzione......
    prova così: crea un nuovo file, copiaci la funzione, poi dichiari $ricerca="prova"; e $stringa="Questa è l'ennesima prova"; , poi scrivi echo hightlight_txt($ricerca, $stringa);
    ....
    Funziona?

  10. #20
    codice:
    <?php
    function hightlight_txt($ricerca, $stringa) 
    { 
          $ricerca="prova";
          $stringa="Questa è l'ennesima prova";
          $pattern = array("/b([[:alpha:]]{1,3})b/i","/'/"); 
          $pattern = preg_replace($pattern, "", $ricerca); 
    
          $pattern = explode(' ',$pattern); 
    
    
           foreach($pattern as $chiave=>$valore) 
                if($pattern[$chiave] == '') 
            unset($pattern[$chiave]); 
    
           foreach($pattern as $chiave=>$valore) 
                $pattern[$chiave] = "/b$valoreb/i"; 
    
    $stringa = preg_replace($pattern,"<font color=\"blue\">$0</font>",$stringa); 
    
    
    
             return $stringa; 
    }
    echo hightlight_txt($ricerca, $stringa); 
    ?>
    Risultato: nessuna parola evidenziata.

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.