antinator
Goto Top

Mit php eine Textdatei durchsuchen

Langsam wird es mir Peinlich dies ist meine 3te frage innerhalb von 2 Tagen:/
Diese script sucht nach Ordnern und nach text der vor einem "|" steht und gibt danach das was nach dem "|" steht wieder. Das funktioniert super aber nun möchte ich mir auch Suchvorschläge anzeigen lassen wie z.B Worddatei wenn ich nur nach "word" gesucht habe. Hoffe jemand kann mir helfen


Seite mit Suchfeld:
<form action="./suchen.php" method="post" name="search"><input type="text" size="10" maxlength="50" name="search" value=""><input type="submit" value="OK" style=""></div></form>

suchen.php (Seite mit Antwort)
<?php
$username = $_POST["search"];  

if (is_dir('./system/User/'.$username)) {  
    echo '<a href="./system/User/'.$username.'/index.php">'.$username.'</a><br>'; }  
  else{ echo "Kein User gefunden:( Bitte vergewissere dich, dass du den Namen richtig eingegeben hast.";}  
?> 
</div>
<div id="right" align="left">  
</<ode>
Suchergebnisse für Dateien:

<?php
$username = $_POST["search"];   
$content = file_get_contents('./Upload/4suche.txt');  
preg_match_all('/^('.preg_quote($username).')\s*\|\s*(.*)/im',$content,$matches);  
if (count($matches[2])){
  for($i = 0; $i < count($matches[2]);$i++){
    echo $matches[2][$i] ."<br>";  
  }
}else{
  echo "Keine Datei gefunden:( Bitte vergewissere dich, dass du den Namen richtig eingegeben hast.";    
}
?>

Content-Key: 287945

Url: https://administrator.de/contentid/287945

Printed on: April 26, 2024 at 13:04 o'clock

Mitglied: 114757
114757 Nov 09, 2015 at 16:21:07 (UTC)
Goto Top
preg_match_all('/^('.preg_quote($username).')\s*\|\s*(.*)/im',$content,$matches);
Einfach den Regex anpassen ...
preg_match_all('/^(.*'.preg_quote($username).'.*)\s*\|\s*(.*)/im',$content,$matches); 
Gruß jodel32
Member: ANTiNATOR
ANTiNATOR Nov 09, 2015 at 16:35:37 (UTC)
Goto Top
Danke für deine Antwort face-smile -_- dabei hab ich schön auf der php seite geguckt ob es da sowas gibt -_- naja supi danke
ps: was gibt es sonst noch für Funktionen?
Mitglied: 114757
114757 Nov 09, 2015 updated at 16:46:26 (UTC)
Goto Top
ps: was gibt es sonst noch für Funktionen?
Wat, ist das jetzt ernst gemeint ??, nicht dein Ernst das ich das beantworten soll wenn noch nicht mal ein Thema welche Funktionen du meinst genannt werden ...
Bitte Suchfunktion benutzen: http://www.php.net/search.php
Member: zuffen
zuffen Nov 09, 2015 at 22:25:21 (UTC)
Goto Top
schon mal erfreulich, daß jetzt eine gewisse struktur in deinen source kommt.

allerdings scheint mir, dasz du mit math. ausdruecken ueberfordert bist.
( auch ich habe kein verlangen danach, demzufolge benuetze ich diese preg_..
nicht. - weil ich mich mit diesen funktionen auseinandersetzen will.
- ja, ich weis, diese funktionen sind schnell und gut.
- ja, ich weis auch, im nicht hochkonzentrierten zustand ( gibts den hasen, geht nicht)
- selbst wenn die andere art etwas umstaendlicher, beim ersten draufschauen nicht
elegant erscheint, ist es doch einfacher ( fuer mich zu verstehen ) )

den jodel hast du etwas veraergert, waere ich auch, wuerde mich mein sohn nicht
auf die selbe art veraergern.

trotzdem vorab noch bemerkung zu deiner strukturierung.
selbstverstaendlich ist die struktierung ganz alleine deine sache.
sobald aber jemand anders den source lesen soll
und dir helfen soll
ist es eine sache der hoeflichkeit.

nicht jeder hat einen breiten monitor.
geht eine zeile ueber ca. 80 zeichen, muss ich, man das umbrechen.
am ende der zeile ist das verknuepfungszeichen oder weiterer text,
d.h. ich musz fuer solche zeilen nach rechts scrollen.
wozu, um dir zu helfen?
es hat einen grund, weshalb vor und hinter den verknuepfungszeichen punkt
eine leerstelle ist un weshalb eine zeile mit dem verknuepfungszeichen beginnt
und nicht endet
und weshalb lange zeilen in mehrere zeilen gesplittet werden.

dasz es mit file_get und file_put einfacher ist, usw. ...

und jetzt ein paar aenderungen in deinem source, obwohl du nicht danach gefragt
hast.

frueher, als speicherplatz teuer war, hat man an jedem zu speichernden byte
gespart. gilt das immer noch?

ob man, wie hier ein Verzeichnis relativ zum aktuellen VZ adressiert,
oder z.b. zum document-root, kommt erst zum tragen, wenn dieses script
in ein anderes VZ verschoben wird.
adressiert zum document-root, den juckt es nicht.

wenn php, dann auch php, kein mix
selbstverstaendlich habe ich es nicht ausprobiert.
ich bin auch nicht dein lehrer.
soll nur den weg zeigen.

der gesamte texte ist eigentlich nicht fuer dich gedacht,
aber irgendwann muss ich es schreiben, warum nicht dann deine frage
ueberbeantworten.

tja, das kann passieren. programmieren ist doch nicht so einfach fuer die
verwoehnden app-user.

interessiert es dich ueberhaupt, oder suchst du nur jemand der deine probs loest?
antwort wird nicht erwartet.


<?php
$username = $_POST [ "search" ];

$filename = './system/User/' . $username;

if ( is_dir ( $filename ) ) {
echo "<a href=\"" . $filename . "/index.php\">"
. $username
. '</a><br>';
}
else{ echo "Kein User gefunden:"
. "( Bitte vergewissere dich, "
. "dass du den Namen richtig eingegeben hast.";
}


echo "</div>";
echo "<div id=\"right\" align=\"left\">";
echo "Suchergebnisse für Dateien:";
echo "</div>";

$treffer = suche ( $filename );

if ( !is_array ( $treffer ) ):
echo "Keine Datei gefundenface-sad Bitte vergewissere dich, "
. "dass du den Namen richtig eingegeben hast.";
else:
for($i = 0; $i < count($treffer);$i++):
echo $treffer[$i] ."<br>";
endfor;
endif;

FUNCTION suche ( $filename ) {


$username = $_POST["search"]; wieso, ist doppelt, tut aber nicht aua

file_get_contents = als string
file = als array
$content = file ( './Upload/4suche.txt' );
$verzeichnis = scandir ( $filename );

for ( $i = 0; $i < count ( $verzeichnis ); $i++ ):
if ( trim ( $verzeichnis [ $i ] ) == "."
or trim ( $verzeichnis [ $i ] ) == ".." ):
google ist dein freund
continue;
endif;
if ( pruefe ( $verzeichnis [ $i ], $content ) ):
$ret = $verzeichnis [ $i ];
endif;
endfor;

if ( isset ( $ret ) ):
return $ret;
endif;
return "nix";


preg_match_all('/^('.preg_quote($username).')\s*\|\s*(.*)/im',$content,$matches);

}


FUNCTION pruefe ( $verzeichnis, $content ) {

im verzeichnis ist der dateiname
content sind die bedingungen
jetzt mit substr, explode usw. untersuchen, ob bedingung zutrifft

for ( $i = 0; $i < count ( $content ); $i++ ):
if ( $verzeichnis == $content [ $i ] ) ):
return true;
endif;
endfor;

return false;
}
?> scripte sollten damit nicht so abgeschlossen werden, kann probs
// mit HTML ergeben. ( nein, erklaerung siehe tante google)
Mitglied: 114757
114757 Nov 09, 2015 updated at 23:27:38 (UTC)
Goto Top
Alter, hast du den Text durch den Google-Übersetzer gejagt ? Ist ja grauenhaft ...

Und bitte nutze doch Codetags ! Denn so ganz ohne Einrückung und vermurksten Sonderzeichen ist das dann leider noch unübersichtlicher.

Gruß jodel

p.s. Wieso soll ich verärgert sein ? Nö ich hab ihm ja die Lösung zu seinem Code geliefert, aber wenn jemand will, dass man alle PHP Funktionen auflistet muss man ja denken das Gegenüber will einen verar...en.