[PHP] Filtro da TXT con collegamento ipertestuale

Discussione in 'PHP' iniziata da Metodo21, 21 Marzo 2018.

  1. Metodo21

    Metodo21 Nuovo Utente

    Registrato:
    21 Marzo 2018
    Messaggi:
    7
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ciao, ho un problema... premetto che non sono molto pratico e i codici che ho sono stati copiati da altre fonti e adattati in base alle mie esigenze
    con un filtro che preleva da un file txt ho dei collegamenti ipertestuali ma non funzionano
    PHP:
    <?php
    /*

    text file search script
      
    searches text file or url for user-entered string,
    outputs line and location with context
    */

    // set text file location here
    $PATH   'p.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_STRING);
    //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($FILE4096);
            ++
    $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;
    }

    $title 'Search '.htmlspecialchars(basename($PATH));
    $searched " for '$search'";
    ?>
    <!doctype html>
    <html>
    <head>
    <title><?php echo $title$searched?></title>
    <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>

    <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;
        cursor:pointer;
    }
    .line span {
        font-style:italic;
        font-size:90%;
    }
    label:after {
        content:': ';
    }
    .field label {
        width:80px;
        display:inline-block;
    }
    .field input {
        width:400px;
    }
    #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 id="ad">
    <script type="text/javascript"><!--
    google_ad_client = "ca-pub-6842783303907583";
    google_ad_slot = "4895617718";
    google_ad_width = 320;
    google_ad_height = 50;
    //-->
    </script>
    <script type="text/javascript"
    src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script>
    </div>

    <form action="" method="GET">
    <?php if (empty($PATH) || !empty($source)): ?>
    <div class="field"><label for="source">Location</label><input type="text" name="loc" id="source" class="source" value="<?php echo $source?>"></div>
    <?php endif; ?>
    <div class="field"><label for="search">Search</label><input type="text" name="q" id="search" class="search" value="<?php echo $search?>"></div>
    <input type="submit" value="Search">
    </form>
    <br>
    <?php if (!empty($search)) echo "<h2>Searched $searched</h2>";?>
    <div id="output">
    <div id="results">
    <?php echo $results;?>
    </div>
    <div class="context" id="context">
    <?php echo '<pre>'.$TEXT.'</pre>';?>
    </div>
    </div>
    </body>
    </html>

    //Questo è il file txt che preleva il filtro

    <a href="https://www.xxxxxx.it/">Collegamento 1</a>
    <a href="https://www.xxxxxx.it/">Collegamento 2</a>
    <a href="https://www.xxxxxx.it/">Collegamento 3</a>
    Grazie
     
    Ultima modifica di un moderatore: 21 Marzo 2018
  2. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.806
    Mi Piace Ricevuti:
    283
    Punteggio:
    83
    Sesso:
    Maschio
    @Metodo21
    Da regolamento del forum, come tutti noi sei tenuto ad usare il tag code.gif quando posti del codice, oppure la funzione codice dalla barra degli strumenti
    box inserisci 2.png.JPG
    Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
    Grazie
    Per questa volta te lo sistemo io ma mi raccomando per il futuro
     
  3. Metodo21

    Metodo21 Nuovo Utente

    Registrato:
    21 Marzo 2018
    Messaggi:
    7
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Grazie 1000, come ho detto non sono pratico... molto auto didatta
    grazie per la comprensione
     
  4. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Passerei ad una soluzione un pò più compatta del tipo:
    PHP:
    $lines=str_getcsv(file_get_contents("file_name.ext"),"\r\n");
    $output='';
    for(
    $i=0;$i<count($lines);$i++){
        echo 
    'Linea numero '.($i+1).' - - '.$lines[$i];
        
    $output .= '<div id="line_'.($i+1).'">'.$lines[$i].'</div>';
    }
     
  5. Metodo21

    Metodo21 Nuovo Utente

    Registrato:
    21 Marzo 2018
    Messaggi:
    7
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    :)Ci piace la linea compatta.... ma dove va messa?
    cosi manca il filtro giusto?:(
     
  6. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Ho semplicemente rimpiazzato il tuo codice
     
  7. Metodo21

    Metodo21 Nuovo Utente

    Registrato:
    21 Marzo 2018
    Messaggi:
    7
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    :(si questo l'avevo capito.... ma come dicevo sono molto autodidatta e ne capisco molto poco
    :)potresti mettermi tutto il codice......o_O
     
  8. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Il codice che ho scritto? Ho scritto solo quello sopra!!!!
     
  9. Metodo21

    Metodo21 Nuovo Utente

    Registrato:
    21 Marzo 2018
    Messaggi:
    7
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Appunto.... dove va sostituito nel mio filtro sopra?
     
  10. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Esattamente va a rimpiazzare quello di cui 4 sopra...
     
  11. Metodo21

    Metodo21 Nuovo Utente

    Registrato:
    21 Marzo 2018
    Messaggi:
    7
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Allora non funziona... copiato e incollato.... risultato uguale:(
     
  12. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Partendo dal fatto che non so quello che devi fare, non so come hai salvato il file, etc... Il codice funziona, ma giacché a te non va qui trovi l'esecuzione del codice qui, qui invece trovi il file... Ora se metti il codice di cui sopra e il file txt nella stessa cartella potrai verificare tu stesso il risultato...
    Ti invito a copiare/incollare stando attendo ai vincoli del codice.
     
  13. Metodo21

    Metodo21 Nuovo Utente

    Registrato:
    21 Marzo 2018
    Messaggi:
    7
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Peggio... cmq quello che vuoi fare già funzionava nell'esempio "più compatto"
    ma non è quello che ho chiesto io
    mi serve un filtro dove preleva i dati con collegamento ipertestualeo da txt e i risultati devono essere cliccabili
    Grazie cmq
    Buona giornata;)
     
  14. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila

    PHP:
    $filtro=$_POST['filtro'];
    $lines=str_getcsv(file_get_contents("file_name.ext"),"\r\n");
    $output='';
    for(
    $i=0;$i<count($lines);$i++){
        
    if(
    strstr($lines[$i],$filtro))$output .= '<div id="line_'.($i+1).'">'.$lines[$i].'</div>';
    }
    Per i click e quant'altro devi provvedere tu a modificare lo script....
     
Sto caricando...

Condividi questa Pagina