Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822

    10 PAROLE prima 10 PAROLE dopo

    data una variabile

    $parola = "tutti";

    ed una frase

    $frase = "bla blabla opalalla ciao bla ciao bla ciao ciao ciao salve a tutti sto facendo una domanda sul forum di html.it ma che bello sono commosso";

    vorrei ricavare:

    "...opalalla ciao bla ciao bla ciao ciao ciao salve a tutti sto facendo una domanda sul forum di html.it ma che..."

    cioè vorrei visualizzare 10 parole prima $parola, $parola e 10 parole dopo $parola
    come faccio?

    grazie a tutti in anticipo.

  2. #2
    prova con questa:

    codice:
    $word='tutti';
    $rex = '/(\w+\W+){1,10}'.$word.'(\W+\w+){1,10}/';
    preg_match( $rex,$frase,$match );
    echo $match[0] ;
    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
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Codice PHP:
    function cerca_in_frase($parola$frase)
    {
        
    $prima substr($frase0strpos($frase$parola));
        
    $prepos count(explode(" "$prima));
        
    $total explode(" "$frase);
        print(
    "...");
        for(
    $i=0;$i<count($total);$i++)
        {
            if(
    $i>$prepos-10 $i<$prepos+10)
            {
                print(
    $total[$i]." ");
            }
        }
        print(
    "...");
    }

    $parola "tutti";
    $frase "bla blabla opalalla ciao bla ciao bla ciao ciao ciao salve a tutti sto facendo una domanda sul forum di html.it ma che bello sono commosso";

    cerca_in_frase($parola$frase); 

  4. #4
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Originariamente inviato da Anªkin
    prova con questa:

    codice:
    $word='tutti';
    $rex = '/(\w+\W+){1,10}'.$word.'(\W+\w+){1,10}/';
    preg_match( $rex,$frase,$match );
    echo $match[0] ;
    Ops...non avevo visto il tuo post. Non so usare le preg, quindi se funziona consgilio decisamente questo


  5. #5
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    Originariamente inviato da Anªkin
    prova con questa:

    codice:
    $word='tutti';
    $rex = '/(\w+\W+){1,10}'.$word.'(\W+\w+){1,10}/';
    preg_match( $rex,$frase,$match );
    echo $match[0] ;
    funziona, il problema è che se non ci sono 10 parole o prima o dopo $word mi restituisce:
    Notice: Undefined offset: 0

  6. #6
    Originariamente inviato da Base
    funziona, il problema è che se non ci sono 10 parole o prima o dopo $word mi restituisce:
    Notice: Undefined offset: 0
    Dici se cerchi una parola che è all'inizio o alla fine della frase? sostituisci gli 1 che vedi nella regex con degli 0. {1,10}-->{0,10}.
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  7. #7
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    mmmm si ma non funge
    volevo evitare ma sono costretto a postare tutto il codice..
    in pratica sto facendo una pagina di ricerca fulltext e con 2 funzioni trovate qui nel forum evidenzio la parola cercata, infine con un while stampo i risultati...

    Codice PHP:
    <?php include ('common/db.php'); ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Ricerca</title>
    </head>
    <body>
    <?
    function bolder($txt1,$htm,$words){
    $txt1 preg_replace("/$words/i",'[b]<font color=\'#CC0000\'>$0</font>[/b]'$txt1) ;
    return 
    $txt1.$htm;
    }
    function 
    grassetto($stringa,$words){
     return  
    preg_replace('/([^<]*)(<(\w.*?|\/\w+)>)?/eis''bolder(\'$1\',"$2",\''.$words.'\')'$stringa);
    }
    ?>
    <form id="prova" action="test.php" method="post" enctype="multipart/form-data">
    <input type="text" name="cerca" value="" />
    <input type="submit" name="invia" value="Cerca" />
    </form>
    <?
    $appendiurl 
    "http://xxxx.it/";

    if(isset(
    $_REQUEST['cerca']) && $_REQUEST['cerca']!=''){

    $cerca preg_replace ('/\x20+/','|'trim($_REQUEST['cerca']));
    $qsearch mysql_query("select * from sez_stat where lower(content) like lower('%$cerca%')") or die("Query fallita !".mysql_error());

        while (
    $res mysql_fetch_array($qsearch)) {

        echo 
    "<div style=\"border:1px solid silver;margin-top:10px;padding:5px;\">

    "
    ;
        echo 
    "Sezione: ".$res['name']."
    "
    ;
        echo 
    "<font size=\"-1\">";
        
        
    $frase grassetto($res['content'],$cerca);
        
    $rex '/(\w+\W+){1,10}'.$cerca.'(\W+\w+){1,10}/';
        
    preg_match$rex,$frase,$match );
        echo 
    "[...]".$match[0]."[...]" ;
        
        echo 
    "</font>
    "
    ;
        echo 
    "<a href=\"".$res['file']."\">".$appendiurl.$res['file']."</a>";
        echo 
    "</p></div>";

        }

    }

    ?>
    </body>
    </html>

  8. #8
    mmm, prova ad invertire queste due :

    codice:
        $rex = '/(\w+\W+){0,10}'.$cerca.'(\W+\w+){0,10}/';
        preg_match( $rex,$res['content'],$match );
        $frase = "[...]".$match[0]."[...]" ; 
    
    // l'ho spostata sotto
    $frase = grassetto($frase,$cerca);
    echo $frase;
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  9. #9
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    si funge ... ma c'è un'altro problema in pratica nei risultati è riapparso magicamente il codice html...

    [...]p align=\"justify\" class=\"testonero_11\">La responsabilità di ogni progetto è affidata ad un Project Manager che garantisce l[...]
    perchè ??

    dimenticavo di rigraziarti, anche solo fin'ora mi sei stato di grande aiuto

  10. #10
    Ho visto ora che passi una lista di parole e non una sola parola. Usata in questo modo cmq non dovrebbe funzionare come vorresti.


    Per quanto riguarda il problema dell'HTML... ma $res['content'] è codice HTML? perche allora il discorso cambia ancora.
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

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.