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

    Cercare una frase in un TXT da una parola

    Salve a tutti,
    ho provato a cerare e ricercare senza grandi risultati, spero di trovare qui la mia risposta.
    Sto cercando di realizzare un "motore di ricerca" che da una parola mi trovi tutta la frase presente su una riga di un file txt. Ad esempio: il file contiene nomi di film:

    1 Asterix e Obelix
    2 La sirenetta
    3 Il re leone
    4 Il re leone 2 ecc

    l'obbiettivo è che se cerco la parola Leone il risultato sia

    3 Il re leone
    4 Il re leone 2

    Ho provato con alcuni script trovati in rete ma 0

    poi l'ideale sarebbe realizzare anche una parte dove è possibile richiedere un film specifico previo controllo sulla "lista" che non sia già presente.

    Ringrazio anticipatamente chi vorrà aiutarmi.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Supponiamo che hai il file titoli.txt che contiene

    1 Asterix e Obelix
    2 La sirenetta
    3 Il re leone
    4 Il re leone 2

    uno su ogni riga

    Codice PHP:
    // parola da cercare
    $cerca 'leone';

    // prendo il contenuto del file e metto ogni riga in un elemento di un array
    $titoli file('titoli.txt');

    // ciclo sui titoli per vedere se trovo la parola e in caso mostro il titolo
    foreach( $titoli as $titolo )
    {
        echo 
    strpos$titolo$cerca ) !== false $titolo '<br>' '';


  3. #3
    Salve allora ho risolto con uno script trovato qui si html.it:

    <?php


    // set text file location here
    $PATH = 'pg19141.txt';
    // if no location is set, an input field will be used (for a url)
    #$PATH = null;




    $search = filter_input(INPUT_GET,'q',FILTER_SANITIZE_STRING) ;
    $source = filter_input(INPUT_GET,'loc',FILTER_SANITIZE_STRIN G);
    //enforce url, no local paths
    if (!empty($source)) $PATH = 'http://'.preg_replace('@^http://@','',$source);


    $FILE = fopen($PATH,'r');




    $results = '';
    $line_number = 0;
    $TEXT = '';
    if ($FILE) {
    while (!feof($FILE)) {
    $buffer = fgetss($FILE, 4096);
    ++$line_number;
    $TEXT .= "<div id=\"line_$line_number\">$buffer</div>";
    $loc = preg_match('@('.preg_quote($search).')@i',$buffer) ;
    if ($loc > 0) {
    $results .= print_results($buffer,$search,$line_number,'line') ;
    }
    }
    fclose($FILE);
    }


    // takes $line as input, outputs formatted search results for $str
    function print_results($line,$str,$lnum=null,$class=null) {
    $style = '';
    if (null != $class) $style = " class=\"$class\"";
    $res = "<div$style><span>$lnum</span>: ".preg_replace('@('.preg_quote($str).')@i',"<b >$1</b>",$line)."</div>";
    return $res;
    }




    ?>
    <!doctype html>
    <html>
    <head>
    <meta name="HandheldFriendly" content="true" />
    <meta name="keywords" content="site search, search script, text index, remote search">
    <meta name="description" content="Use this free PHP script to search text of files located on your web server or contents of remote web sites">
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <table align="center"><td>
    <script type="text/javascript">
    $(document).ready(function() {
    $('#results div').click(function() {
    baseOffset = $('#context').offset().top;
    baseOffset = $('#context').offsetTop;
    targetLine = $(this).children().filter('span:first').text();
    targetOffset = $('#line_'+targetLine).position().top;
    $('#context').animate({scrollTop: $('#context').scrollTop() + targetOffset}, 400);
    return false;
    });
    });
    </script>
    <style type="text/css">
    .line {
    background:#ccccff;
    border:1px dotted #6666cc;
    cursorointer;
    }
    .line span {
    font-style:italic;
    font-size:90%;
    }
    label:after {
    content:': ';
    }
    .field label {
    width:80px;
    display:inline-block;
    }
    .field input {
    width:200px;
    }
    #results,#context {
    border:1px solid #ccc;
    padding:3px;
    min-width:300px;
    width:45%;
    float:left;
    height:600px;
    overflow:auto;
    position:relative;
    }
    #output {
    margin:19px auto;
    width:90%;
    position:relative;
    }
    #ad {
    float:right;
    }
    </style>
    </head>
    <body>
    <h1><?php echo $title; ?></h1>
    <div align="center">
    <form action="" method="GET">
    <?php if (empty($PATH) || !empty($source)): ?>
    <div class="field"><label for="source">Posizione</label><input type="text" name="loc" id="source" class="source" value="<?php echo $source; ?>"></div>
    <?php endif; ?>
    <div class="field"><label for="search">Cerca</label><input type="text" name="q" id="search" class="search" value="<?php echo $search; ?>"></div>
    <br><input type="submit" value="Cerca"></div>
    </form>
    <br>
    <?php if (!empty($search)) echo "<h2>Risultato $searched</h2>";?>
    <?php echo $results;?></td></table>
    </div>
    </div>
    </div>
    </body>
    </html>

    funziona ma ora c'è un problema, ovvero aprendo la pgina con lo script mi mostra tutto il contenuto del file e poi se faccio la ricerca mi trova quello che deve trovare. Come posso non far vedere la lista totale?
    Vorrei che venisse mostrato solo il risultato una volta cercato.
    Grazie mille
    Ultima modifica di mirkoprog; 26-07-2016 a 12:42

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.