[PHP] Filtro da TXT con collegamento ipertestuale

Metodo21

Nuovo Utente
21 Mar 2018
7
0
1
57
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.449
338
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
57
Grazie 1000, come ho detto non sono pratico... molto auto didatta
grazie per la comprensione
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
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.343
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
57
:(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.343
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
57
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.343
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
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 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

Discussioni simili