![]() |
Anzeige:
|
|
|||||||
| PHP/MySQL Alles rund um die Programmiersprache PHP sowie MySQL. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Stammuser
![]() Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
|
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?
__________________
mFg K. R. Eyden |
|
|
|
|
|
|
#2 (Direktlink) |
|
Dauergast
![]() Registriert seit: 04.07.2004
Ort: Leipzig
Beiträge: 1.085
|
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. |
|
|
|
|
|
#3 (Direktlink) |
|
Stammuser
![]() Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
|
Code:
//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$search$piece2";
$array .= "<u>fundstelle mit $test treffer</u>
$rest
<a href=index.php?site=".$file."> >> $file </a>
\n";
$found ++;
}}}}
closedir($verz);
if($found != "0")
{
echo "es wurden $found 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>";}
__________________
mFg K. R. Eyden |
|
|
|
|
|
#4 (Direktlink) |
|
War schon mal da
![]() Registriert seit: 19.02.2007
Beiträge: 38
|
Code:
$_tmp = explode(".",$file)
$_extension = $_tmp(sizeof($_tmp)-1)
$_filename = join("",$_tmp)
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: Code:
$_tmp = explode(".",$file)
$_extension = $_tmp(sizeof($_tmp)-1)
$_filename = $_tmp[0]
Kleiner Tipp: am besten dieses in eine eigene function coden dann kannst du da öfter drauf zugreifen bzw. verwenden. Liebe Grüsse.[/code] |
|
|
|
|
|
#5 (Direktlink) |
|
Stammuser
![]() Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
|
ä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
__________________
mFg K. R. Eyden |
|
|
|
|
|
|
#6 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
|
Ich weiß nicht, aber würde es nicht reichen, einfach ".php" und ".inc.php" durch "" zu ersetzen?
Im Sinne von Code:
$query = str_replace(".inc.php", "", $query);
$query = str_replace(".php", "", $query);
Genesis |
|
|
|
|
|
#7 (Direktlink) |
|
War schon mal da
![]() Registriert seit: 19.02.2007
Beiträge: 38
|
Hi am besten fügst du das hier zwischen ein und tauscht einmal $file aus
Code:
$rest = "$piece1$search$piece2";
//hier
$_tmp = explode(".",$file)
$_extension = $_tmp(sizeof($_tmp)-1)
$_filename = join("",$_tmp)
$array .= "<u>fundstelle mit $test treffer</u>
$rest
<a href=index.php?site=".$_filename."> >> $file
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. |
|
|
|
|
|
#8 (Direktlink) |
|
War schon mal da
![]() Registriert seit: 19.02.2007
Beiträge: 38
|
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:
function 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;
}
Hier das ganze nochmal anhand deines codes: Code:
//HIER DIE FUNKTION EINFÜGEN! //Welcher Dateityp soll durchsucht werden? $dateityp = ".php"; //= alle HTML-Dateien (.htm, .html, .shtml) ..... //HIER WURDE AUSGETAUSCHT! //$array .= "<u>fundstelle mit $test treffer</u> $rest <a href=index.php?site=".$file."> >> $file </a> \n"; $array .= "<u>fundstelle mit $test treffer</u> $rest <a href=index.php?site=".splitFilePath($file,"filename")."> >> $file </a> \n"; |
|
|
|
|
|
#9 (Direktlink) |
|
Stammuser
![]() Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
|
ha es geht...mann ich packs nich Dir vielen vielen tausend Dank murray_de_luxe... ![]() 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...
__________________
mFg K. R. Eyden |
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|