• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Dateien von der Suche ausschließen, Groß und Kleinschreibung

JulianMark

Neues Mitglied
Code:
<?php include '1.php'; ?>

<?php
$dateityp = ".php";
if(empty($search)) {$search=$_GET[q];}
if(strlen($search) < "3")
{echo "Geben Sie einen Suchbegriff von mindestens drei Buchstaben ein.";exit;}
$found = "0";
$verz = opendir('.');
while($file = readdir($verz))
{
if($file != "." && $file != ".." &&  !is_dir($file))
{
$filetype = stristr($file, $dateityp);
if(!empty($filetype))
{
$string = file_get_contents($file);
$string = html_entity_decode($string);
$test = substr_count($string, $search);
if(!empty($test))
{
$string = ereg_replace("\n", "", $string);
$string = strip_tags($string);

$pieces = explode(strtolower($search), strtolower($string));
$pieces = explode($search, $string);
$piece1 = substr($pieces[0], -50);
$piece1 = explode(" ", $piece1);
array_shift($piece1);
$piece1 = implode(" ", $piece1);
$piece2 = substr($pieces[1], 0, 100);
$piece2 = explode(" ", $piece2);
array_pop($piece2);
$piece2 = implode(" ", $piece2);
$rest = "$piece1<b>$search</b>$piece2";
$array .= "<b>$test</b> mal in Datei: <a href=\"$file\" target=\"_self\" class=\"link\">$file</a> <br>...$rest... <br> <br><br>\n";
$found ++;
}}}}
closedir($verz);
if($found != "0")
{
echo "Anzahl der gefundenen Seiten: <strong>$found</strong> <br /> Sortiert nach der H&auml;ufigkeit des Vorkommens.<br><br>";
$array = explode("\n", $array);
natsort($array);
reset($array);
$array = array_reverse($array);
while(list($line_num, $line) = each($array))
{
$ausgabe .= "$line\n";
}
print $ausgabe;
}
if($found == "0")
{ echo "Es wurden keine &uuml;bereinstimmungen mit dem eingegebenen Suchbegriff gefunden.";}
?>

<?php include '2.php'; ?>

Man hat mir schon gesagt, dass der Code unsauber ist, aber das ist in Ordnung, denn er funktioniert so, wie ich es möchte. Doch zwei kleine Probleme gibt es trotz allem noch: Ich möchte Dateien aus einem Verzeichnis von der Suche ausschließen, in dem Verzeichnis befinden sich auch Dateien die durchsucht werden können. Ansonsten noch ein größeres Problem: Ignorierende Groß- und Kleinschreibung? Falls sich jemand wirklich damit auskennt, kann er bitte oben genannte Dinge dazu editieren. Falls es doch etwas komplizierter werden sollte, dann bitte ich um Rücksicht weil ich noch ganz neu in PHP in.
 
Werbung:
Werbung:
Warum kriegt man hier nie eine hilfreiche Antwort?

Nun, deine Fehlerbeschreibung ist nicht hilfreich:

Die Antwort von sysop sollte dein Problem lösen.
Wenn nicht, bitte genauer um/beschreiben.


Man hat mir schon gesagt, dass der Code unsauber ist
In der Tat. Ich kann nur grob erkennen, was du damit bezwecken willst. Willst du damit Dateinamen, bzw einen String nach Stringteilen im Dateinamen suchen?

Mfg
 
nicht nur die fehlermeldungen...

du möchtest dateien von der suche ausschliessen, sagst aber weder welche noch wie ich (oder jemand anderer) sie erkennen soll.

PHP:
if($file != "." && $file != ".." &&  !is_dir($file) && $file !="abc.dat" && $file != "was_immer_du_willst.doc")

was klappt denn nun nicht?

dass man hier nie ordentliche fragen bekommt :mrgreen:
 
Werbung:
Och mensch könnt ihr den Code bitte einfach in meinen dazueditieren? Ich bin nicht so'n Könner wie ihr.
Nagut, weil du 'bitte' gesagt hast:

Ich möchte Dateien aus einem Verzeichnis von der Suche ausschließen, in dem Verzeichnis befinden sich auch Dateien die durchsucht werden können.
Ich habe im folgenden Code ein Array oben eingefügt, in dem du nach meinem Beispiel Dateinamen reinschreiben kannst, die dann nicht durchsucht werden.

Ansonsten noch ein größeres Problem: Ignorierende Groß- und Kleinschreibung?
Ich habe dein Script augenfreundlich formatiert und die entsprechenden Änderungen vorgenommen. Nun wird zwischen Groß- und Kleinschreibung unterschieden.

Dein überarbeitetes Script:
PHP:
<?php 
include('1.php'); 

$zeigenicht = array(
'.',
'..',
'testconfig1.php',
'testconfig2.php',
);

$dateityp = ".php";
if(empty($search)) { $search = $_GET['q']; } #
if(strlen($search) < 3) { #
 echo "<p>Geben Sie einen Suchbegriff von mindestens drei Buchstaben ein.</p>"; #
 exit;
}
$found = 0; #
$verz = opendir('.');
while($file = readdir($verz)) {
 if(!in_array($file, $zeigenicht) && !is_dir($file)) { #
  $filetype = strstr($file, $dateityp); #
  if(!empty($filetype)) {
   $string = file_get_contents($file);
   $string = html_entity_decode($string);
   $test = substr_count($string, $search);
   if(!empty($test)) {
    $string = ereg_replace("\n", "", $string);
    $string = strip_tags($string);
    ##$pieces = explode(strtolower($search), strtolower($string)); #
    $pieces = explode($search, $string);
    $piece1 = substr($pieces[0], -50);
    $piece1 = explode(" ", $piece1);
    array_shift($piece1);
    $piece1 = implode(" ", $piece1);
    $piece2 = substr($pieces[1], 0, 100);
    $piece2 = explode(" ", $piece2);
    array_pop($piece2);
    $piece2 = implode(" ", $piece2);
    $rest = $piece1."<em>".$search."</em>".$piece2; #
    $array .= "<p><em>".$test."</em> mal in Datei: <a href=\"".$file."\" class=\"link\">".$file."</a> <br />...".$rest."...</p>\n"; #
    $found ++; 
   }
  }
 }
}
closedir($verz);

if($found === 0) { #
 echo "<p>Es wurden keine &Uuml;bereinstimmungen mit dem eingegebenen Suchbegriff gefunden.</p>"; #
} else {
 echo "<p>Anzahl der gefundenen Seiten: <strong>".$found."</strong><br />Sortiert nach der H&auml;ufigkeit des Vorkommens.</p>"; #
 $array = explode("\n", $array);
 natsort($array);
 reset($array);
 $array = array_reverse($array);
 while(list($line_num, $line) = each($array)) {
  $ausgabe .= "".$line."\n"; #
 }
echo $ausgabe;
}

include('2.php'); 
?>
In den Zeilen die ich geändert habe, habe ich ein # am Ende gesetzt, fals du es nachverfolgen möchtest.

Oben die Dateinamen testconfig1.php und testconfig2.php sind ein Beispiel für die Verwendung von Dateinamen, die das Script bei der SUche ignorieren soll. Es kann um beliebige Zeilen erweitert werden.

Neben der optischen Formatierung war ich so frei und habe auch ein wenig HTML Semantik reingebracht.

Mfg
 
Zuletzt bearbeitet:
Danke Zahl ^^
Aber Groß- und Kleinschreibung lässt er immernoch egal sein.
Ich weiss nicht was falsch ist. Ich habe das Problem seit 2 oder 3 Monaten,
aber wenigstens konntest du mir bei einer Sache helfen.

Und wo du ja so gut bist, noch etwas, falls du es kannst.
Beim downloaden wird die Größe der Datei nicht angezeigt. Da steht dann halt
zum Beispiel "1MB von ?"

Code:
<?php
$Datei = "videos/".$_GET['datei'];
$Dateiname = basename($Datei);
$Gros = filesize($Datei);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=$Dateiname");
header("Content-Length: $Gros");
readfile($Datei);
?>
 
Werbung:
Danke Zahl ^^
Aber Groß- und Kleinschreibung lässt er immernoch egal sein.
Ich weiss nicht was falsch ist. Ich habe das Problem seit 2 oder 3 Monaten,
aber wenigstens konntest du mir bei einer Sache helfen.
Ich hab das Script vorher getestet. Die Groß- und Kleinschreibung wird dort berücksichtigt. Gib es vielleicht vorher im GET noch eine Umwandlung von Groß-KleinBuchstaben?

Edit: Wird im GET q= von deinem Such-Formular überhaupt gesetzt? Denn if(empty($search))..... lässt darauf schliessen, das $search vielleicht vorher anders gesetzt wird, sonnst würde man so eine Abfrage nicht einbauen.


Und wo du ja so gut bist, noch etwas, falls du es kannst.
Beim downloaden wird die Größe der Datei nicht angezeigt. Da steht dann halt
zum Beispiel "1MB von ?"
Versuch mal:
PHP:
<?php
$Datei = "videos/".$_GET['datei'];
$Dateiname = basename($Datei);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$Dateiname\"");
readfile($Datei);
?>
So benutze ich es zumindest. Sonnst schau dir mal andere Referenzen von header an.

Mfg
 
Zuletzt bearbeitet:
So sieht die Suche nach der Adresse aus:
Code:
/search.php?q=Suchwort

So ist die Suche in die Seite eingebunden:
Code:
<div id="search">
    <form style="background: transparent url(images/Suche.png) no-repeat scroll 0% 0%;" action="search.php" method="get" name="form1">
    <input type="text" style="margin-left: 10px; margin-right: 5px;" class="search" name="q"/></form>
</div>

Dass das das ist, das du meintest, das ist sicher. (:mrgreen:)
Oder nicht?


Download geht immernoch nicht.
 
Beim downloaden wird die Größe der Datei nicht angezeigt. Da steht dann halt
zum Beispiel "1MB von ?"

Ich habe heute so ein Download Script erstellt und bei mir wird angezeigt, wieviel MB noch übrig sind.
Ich denke, es lag an deiner Reihenfolge.
So wird es mir angezeigt:
PHP:
header("Content-Type: application/force-download");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=".$filename);
readfile($toroot.$file);
Also erst content-length, dann die disposition.

Mfg
 
Werbung:
Code:
<?php
$Datei = "videos/".$_GET['datei'];
$Dateiname = basename($Datei);
header("Content-Type: application/force-download");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=".$Dateiname);
readfile($toroot.$file); 
?>

So siehts aus. Aber es funktioniert nischt.
 
Zurück
Oben