+ Rispondi
Risultati da 1 a 6 di 6

Discussione: visualizare le ricorrenze di una sottostringa in una stringa in grassetto o eviden

  1. #1
    Neofita della community
    reputazione complessiva: 1 1

    Messaggi
    69

    visualizare le ricorrenze di una sottostringa in una stringa in grassetto o eviden

    Salve,
    ho un nuovo problema
    devi visualizzare una stringa prelevata da una tabella di un database
    con le ricorrenze di una sottostrina ( scelta attraverso una select)
    in grassetto o evidenziato.

    esempio:
    la stringa letta è :" dddghd pippo hfjakah pippo cjhccj<pippo"
    la sottostringa cercata è "pippo"
    mi deve visualizzare la prima stringa in quersto modo:
    dddghd pippo hfjakah pippo cjhccj<pippo
    Il codice php e' il seguente:


    Codice PHP:
    ?php 
    if (isset($_POST['upload']) > 0){

    $strSQL "SELECT * FROM ANAGRAFICA where id_anag = '".$_POST['id_anagrafica']."' ";
           
    $result mysql_query($strSQL$conn) or die (print(mysql_error()));
           
    $row mysql_fetch_assoc($result);
           
    $cognome $row['cognome'];

       
    $strSQL "SELECT * FROM ordini where ID_ORDINE = '".$_POST['ID_ORDINE']."' ";
           
    $result mysql_query($strSQL$conn);
           
    $row mysql_fetch_assoc($result);
           
    $estratto $row['ESTRATTO'];
           if (
    eregi($cognome$estratto))  {

    $a str_replace($cognome,"<b>".$cognome."</b>",$estratto);
    echo 
    $a;
    }
          else
          echo
    "non ci sono interventi di "$cognome;
           

    }
    ?> 
    aspetto una risposta
    grazie
    Rita

  2. #2
    Neofita della community
    reputazione complessiva: 1 1

    Messaggi
    50
    mmm... sembrerebbe giusto.. io però proverei una cosa di questo tipo
    Codice PHP:
    $cognome_grassetto="<b>".$cognome."</b>";
    $a str_replace($cognome$cognome_grassetto ,$estratto); 
    perchè potrebbe darsi che alla str_replace non gli piacciano le virgolette punti ecc... potrebbero dar problemi...
    prova, se non viene dicci che errore/problema ti da...

  3. #3
    Neofita della community
    reputazione complessiva: 1 1

    Messaggi
    69

    visualizzare ricorrenze testo in grassetto o evidenziato

    Salve,
    ho provato a utilizzare il tuo sugerimento , ma non funziona.
    Rimane tutto invariato.
    Attendo lumi!
    Grazie
    Rita

  4. #4
    Neofita della community
    reputazione complessiva: 1 1

    Messaggi
    50
    potrebbe anche essere che ci vadano i monoapici o i doppi apici...
    tipo:
    $a = str_replace("$cognome", "$cognome_grassetto" ,$estratto);
    non so bene, è una funzione che non ho mai usato.
    al limite te la puoi creare te una funzione simile, ma proprio se non riesci a risolvere il problema... verrebbe una cosa un pò contorta, tipo:
    Codice PHP:
    $lung=strlen($estratto);
    $lungc=strlen($cognome);
    for(
    $i=0;$i<$lung;$i++)
    {
        
    $c=0;
        for(
    $j=0;$j<$lungc;$j++)
        {
            if(
    $estratto[$i+$j]!=$cognome[$j])
            {
                 
    $c++;
                 
    $j=$lungc+1;
            }
        }
        if(
    $c==0)
        {
            echo
    "<b>";
            
    $fineb=$i+$lungc;
        }
        echo 
    $estratto[$i];
        if(
    $i==$fineb)
        {
            echo
    "</b>";
        }

    non l'ho provato, non so se va, l'importante è che capisci la logica di funzionamento, così riesci a modificarlo se da problemi.
    per prima cosa con strlen prendo la lunghezza della parola ricercata e della variabile dove viene cercata.
    il primo for scorre la variabile $estratto e il secondo la variabile cognome.
    nel secondo for c'è un if che fa un paragone:
    se la prima cella della variabile $cognome è uguale alla cella $estratto nel punto in cui è arrivata (per via del primo for) allora procede con la cella successiva e le paragona...
    se per caso le celle non sono uguali esce dal for (perchè j diventa troppo grande) e la variabile $c (controllore) viene incrementata.
    successivamente si controllerà che se è rimasta a zero la variabile $c (quindi le condizioni del if mostrano che la variabile $cognome è presente in $estratto) si stamperà <b> e si memorizzerà il punto dove chiudere il grassetto (</b>). poi si stampa sempre la variabile $estratto, indipendentemente dal fatto che ci sia il grassetto o meno. e l'ultimo if chiude il grassetto..

    questo metodo è il più contorto, ma non mi veniva in mente nient'altro, non conoscendo la funzione replace...

    spero che riuscirai a mettere tutto a posto, se non ti è chiaro qualcosa sarò felice di darti una mano

  5. #5
    Neofita della community
    reputazione complessiva: 1 1

    Messaggi
    69

    Question visualizazzasione sottstringa in grassetto

    SALVE,
    Funziona in modo parziale.
    Se c'è la parola Sindaco e la parola Vicesindaco
    e la parola ricercata e' 'Sindaco'
    mi evidenzia sia Sindaco che Vicesindaco,
    e non deve essere così.
    Come fare?
    Aspetto
    Grazie
    RITA

  6. #6
    Neofita della community
    reputazione complessiva: 1 1

    Messaggi
    50
    contando che quello script non l'avevo nemmeno provato son molto soddisfatto del risultato
    diciamo che lo script funziona in modo parziale perchè questo che hai citato era un caso che non avevo previsto.
    dovresti fare delle prove ma credo che si possa risolvere
    sostituendo la riga:
    if ($c==0)
    con la riga:
    if ($c==0 && $estratto[$i-1]==" ")
    che praticamente dice che oltre al fatto che la $c deve essere uguale a zero pure la cella precedente alla parola cercata deve essere uno spazio.
    quindi se la parola è vicesindaco, siccome non c'è uno spazio tra la 'e' e la 's' non entrerà nel if, mentre se è vice sindaco, entrerà, siccome c'è lo spazio...

    credo che così funzioni anche se non son certo che i doppi apici che racchiudono uno spazio lui li legga come spazio...
    per esempio se non ricordo male il a capo lo vede come \n..
    però probabilmente va... facci sapere

+ Rispondi

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi