[PHP] Filtro da TXT con collegamento ipertestuale

Metodo21

Nuovo Utente
21 Mar 2018
7
0
1
55
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($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;
}

$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:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.407
339
83
@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
 

Metodo21

Nuovo Utente
21 Mar 2018
7
0
1
55
Grazie 1000, come ho detto non sono pratico... molto auto didatta
grazie per la comprensione
 

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
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>';
}
 

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
Ho semplicemente rimpiazzato il tuo codice
$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);
}
 

Metodo21

Nuovo Utente
21 Mar 2018
7
0
1
55
:(si questo l'avevo capito.... ma come dicevo sono molto autodidatta e ne capisco molto poco
:)potresti mettermi tutto il codice......o_O
 

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
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.
 

Metodo21

Nuovo Utente
21 Mar 2018
7
0
1
55
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;)
 

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
mi serve un filtro dove preleva i dati con collegamento ipertestualeo da txt


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....
 
Discussioni simili
Autore Titolo Forum Risposte Data
Shyson Spostare filtro php di WordPress WordPress 0
M [PHP] o [APACHE] - Filtro geo per accesso sito PHP 6
S [PHP] filtro PHP 25
sandropochi [PHP] Form per creare filtro di ricerca su DB PHP 8
M [PHP - MYSQL] Mantenere filtro query in tabelle paginate PHP 3
I Datagrid Jquery PHP, mi servirebbero alcune soluzioni... Insrimento immagine e filtro PHP 2
davidec Disabilitare il filtro XSS (cross site scripting) via PHP PHP 3
G filtro in php con Drupal CMS (Content Management System) 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1

Discussioni simili