Hi Leute, ich schon wieder
ich habe ein Suchscript, das läuft ganz hervorragend, allerdings gibt es mir jede Seite der HP, in der das gesuchte Wort vorkommt, als xxx.php aus. Diese wird dann mit <...href="$file"...> aufgerufen. Da ich aber meine Seiten mit index.php?site=xxx einfüge, kommt hier ein Problem auf, da index.php?site=xxx.php nicht geht.
Kann ich also das .php von der Variablen $file irgendwie wegschneiden?
.php wegschneiden
-
-
- Gerade eben
- Anzeige
Hallo!
Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.
- ✔️ Schnelle Ladezeiten (optimiert für WordPress, WoltLab & Co.)
- ✔️ Deutsche Server & DSGVO-konform
- ✔️ Persönlicher Support (kein 0815-Ticket-System)
Wenn du Fragen hast, kannst du dich gerne jederzeit an @Maximilian Rupp wenden
Hinweis:
-
Die einfachste Möglichkeit wäre, wenn du das Suchscript selbst entsprechend anpasst. Da du dessen Code nicht gepostet hast kann ich dazu auch nichts genaueres sagen.
Eine andere Möglichkeit wäre htaccess, wobei ich davon aber in dem Fall abraten würde, da du sicher auch mal normale ".php"-Dateien aufrufen willst.
-
Code
Alles anzeigen//Welcher Dateityp soll durchsucht werden? $dateityp = ".php"; //= alle HTML-Dateien (.htm, .html, .shtml) //Wenn alternativ PHP-Dateien durchsucht werden sollen, geben Sie unter $dateityp .php ein. if(empty($search)) {$search=$_POST[search];} if(strlen($search) < "3") {echo "der suchbegriff muss eine mindestlänge von 3 buchstaben haben.";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); $string = strtolower($string); $search = strtolower($search); $test = substr_count($string, $search); if(!empty($test)) { $string = ereg_replace("\n", "", $string); $string = strip_tags($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]<u>fundstelle mit $test treffer</u>[/b] $rest <a href=index.php?site=".$file."> >> $file </a> \n"; $found ++; }}}} closedir($verz); if($found != "0") { echo "es wurden [b]$found[/b] treffer gefunden, sortiert nach der häufigkeit des suchbegriffs: "; $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 leider keine übereinstimmungen mit dem eingegebenen suchbegriff gefunden! <a href=\"index.php\">zur startseite</a>";}
das copyright hab ich mal weggelassen, ist von artmedic -
Moin, ich hab das mit Absicht so gelöst, da es ja sein kann das auch Dateien im Format 123.inc.php vorliegen könnten
somit würde dann im filename 123.inc stehen und in extenstion halt das php. Wenn Du natürlich genau weisst das die DAteien NUR im Format xyz.php vorliegen dann kannst du natürlich auch das dann getrost so schreiben:
Gäbe natürlich noch andere Lösungen.
Kleiner Tipp: am besten dieses in eine eigene function coden dann kannst du da öfter drauf zugreifen bzw. verwenden.
Liebe Grüsse.[/code] -
äh, ok also verstanden habe ich deinen Code schonmal...aber wo genau soll ich das jetzt einfügen oO
weil das sind ja völlig neue Variablen, da muss ich doch ne Reihenfolge einhalten oder oO -
-
Hi am besten fügst du das hier zwischen ein und tauscht einmal $file aus
Code
Alles anzeigen$rest = "$piece1[b]$search[/b]$piece2"; //hier $_tmp = explode(".",$file) $_extension = $_tmp(sizeof($_tmp)-1) $_filename = join("",$_tmp) $array .= "[b]<u>fundstelle mit $test treffer</u>[/b] $rest <a href=index.php?site=".$_filename."> >> $fileGenesis
Dein Einwand bzw. die Frage ist berechtigt. Nur gehe ich generell immer davon aus, das der Dateiname vorher nicht bekannt ist, Bsp:
yst.php
yst.inc.php
yst.inc.2.old.mal.bak.php
wenn dir die dateinamen bekannt bzw. geläufig sind, kannst du das durchaus mit deiner Lösung auch lösen, nur bei z.B. 120 Dateien hast du sehr viel sourcecode getippelt und somit wird das script irgendwan sehr lastig. Wie gesagt sonst gehts natürlich auch, nur ich geh immer wie gesagt davon aus die ermittelten Dateinamen nicht bekannt sind und somit ermittel ich generell die extension und der rest ist dateiname. Was natürlich durchaus weiterverarbeitet werden kann. Z.B. da die Extension bekannt ist könnte man nun z.B. auch ne sicherheitsabfrage machen wenn man z.B. wirklich NUR Dateien mit der Endung PHP ausgeben lassen will, es kann ja sein das sich auch andere Dateiformate im Dir befinden. Das könntest du nun ganz einfach mittels z.B. if(strtolower($extension) = "php")
usw usw. -
Huch @K.R.Eyden
bei mir hat sich da ein kleiner Fehlerteufel eingeschlichen, beim letzten part ist was nicht i.O. Ich bitte um Sorry. Hab dafür dir das ganze mal korrekt als Function geschrieben, dann kannst das öfter mal verwenden.füge diese am besten ganz oben ein:
Code
Alles anzeigenfunction splitFilePath($filename,$return = "") { //wenn filename != "" und im filename mindestens 1 mal ein Punkt vorkommt if(strlen($filename) > 0 && strstr($filename,".")) { $_temp = explode(".",$filename); $_tmp = array( "fullname" => $filename, "fullasarray" => $_temp, "extension" => array_pop($_temp), "filename" => array_shift($_temp), "anotherparts" => join(",",$_temp), "anotherpartsasarray" => $_temp ); if (strlen($return) > 0) { if (isset($_tmp[$return])) return $_tmp[$return]; else return NULL; } return $_tmp; } return NULL; }aufrufen und z.B. nur den Dateiname zu erfassen kannst du dann einfach mittels splitFilePath("name.inc.bla.suelz.php","filename")
Hier das ganze nochmal anhand deines codes:Code
Alles anzeigen//HIER DIE FUNKTION EINFÜGEN! //Welcher Dateityp soll durchsucht werden? $dateityp = ".php"; //= alle HTML-Dateien (.htm, .html, .shtml) ..... //HIER WURDE AUSGETAUSCHT! //$array .= "[b]<u>fundstelle mit $test treffer</u>[/b] $rest <a href=index.php?site=".$file."> >> $file </a> \n"; $array .= "[b]<u>fundstelle mit $test treffer</u>[/b] $rest <a href=index.php?site=".splitFilePath($file,"filename")."> >> $file </a> \n";
Ich hoffe ich hab da jetzt nicht wieder was vergessen bzw. übersehen. -

ha es geht...mann ich packs nich
mein F5-Knopf is schon ganz abgenutztDir vielen vielen tausend Dank murray_de_luxe... :respekt:
jetzt kann ich wieder ruhig schlafen^^//Edit: aber was mich mal intressiern würd: bei deinem vorigen code die variable $_extension war doch völlig unnützlich oder? wurde ja nirgends mehr gebraucht...
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!