PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vollständigen Pfand einer Datei finden


juergen
10.09.2009, 12:14:28
Hallo Forum,

ich habe ein Problem bei dem ich Eure Hilfe benötige.

Ich durchsuche ein Verzeichnis und suche in den einzelnen Dateien mit einem Muster nach einem String. z.B. <span>Der String</span>. Die gefundenen Strings lasse ich dann in einem Pulldown Menue ausgeben. Das funktioniert super. Jetzt wähle ich aus diesem Pulldown einen entsprechenden Eintrag aus und speichere noch mit anderen im Formular eingegebenen Daten alles in eine Datenbank. So jetzt kommt meine Frage:

Ich möchte mittels diesem String den ich im Formular jetzt ausgewählt habe und in der Datenbank jetzt speichern will den vollständigen Pfand der Datei ermitteln in dem der String vorher gefunden wurde!
Sagen wir mal ich habe 300 Dateien in dem Verzeichnis und in jeder Datei wird ein String gesucht dann habe ich ein Suchergebnis von 300 verschiedene Strings die mir dann im Pulldown angezeigt werden. Jetzt will ich auch noch wissen wie der Pfad der Datei aussieht aus dem jeder einzelne String gefunden wurde.

Ich stelle mir das so vor.
Nach absenden des Formulares durchsuche ich abermals das Verzeichnis nach dem String den ich im Formular ausgewählt habe. Wenn ich eine Übereinstimmung habe kann ich mit __file__ den Pfad in eine Variable speichern! Soweit habe ich das schon verstanden.

Kann mir da einer mit etwas Code zur Seite stehen oder kennt einer einen anderen Weg?

Domi
10.09.2009, 12:24:50
Hi,

könnte dir sowas helfen?

http://us2.php.net/manual/en/function.realpath.php
http://us2.php.net/manual/en/function.basename.php

oder willst du von ner fremden Seite den Pfad so mit http:// und so? Werde noch nicht so ganz schlau, was du vor hast.

Gruß
Domi

juergen
10.09.2009, 13:57:49
Hallo Domi,

die Links sind mir bekannt.
Das Verzeichnis liegt auf meinem Server und ich brauche eigendlich nur den Dateinamen passend zum String. Den Rest könnte ich vorgeben.

In dem zu durchsuchenden Verzeichnis sind ca. 300 Dateien. Alles php Seiten. In jeder Datei kommt ein <span>Immer ein unterschiedlicher Text</span> vor. Den Text zwischen <span></span> kenne ich. Der steht in meinem Pulldown wo ich Ihn auswählen kann. Das ist mein String. Jetzt brauche ich den Dateinamen bzw. den ganzen Pfad mit http://www.meine-seite.de/verzeichnis/irgendwas.php in dem dieser String steht!

Das http://www.meine-seite.de/verzeichnis/ könnte ich vorgeben!
Das irgendwas.php suche ich.
Das <span>Immer ein unterschiedlicher Text</span> habe ich!

Domi
10.09.2009, 14:02:30
Gut und wo ist jetzt dein Problem? Du kannst es nicht auslesen? Wie soll ich wissen wie diese irgendwas.php aussehen bzw nach welchem Muster man das suchen kann? Das solltest du schon selber ;)

juergen
10.09.2009, 14:13:14
Hallo Domi,

ich habe das Muster und ich weis wie ich suchen mus. Das ist nicht das Problem.
Das Problem ist wie ich den Dateinamen bzw. die ganze Url bestimmen soll wenn ich eine übereistimmung gefunden habe.

Das kann ich besteimmt mit einer if then else Kontrollstrucktur machen! Ich weis allerdings nicht wie!

Domi
10.09.2009, 14:15:26
ähhh.. da würde ich sagen probierst du mal selber. Das sollte nicht so schwer sein. Wenn ne Lösung hast aber nicht ganz weiter kommst oder sie nur zum Teil klappt, dann helfen wir wieder, okay? =)

juergen
10.09.2009, 14:40:56
Hallo Domi,

sowas ähnliches hatte ich erwartet. ;-((

Das ist mein Code wie er jetzt ist. Die Datenbankabfrage dient dazu das Datensätze nicht noch mal im Pulldown erscheinen die schon angelegt wurden.

Wo und Was muß jetzt noch eingebaut werden wenn ich den jeweiligen Dateinamen zum Suchmuster finden will.

<?

//Pulldown Navigation ausgeben

$navi_files_hotel = "../villen/"; //Ordner mit Dateien
$path_hotel = opendir($navi_files_hotel);
while(false !== ($file_hotel = readdir($path_hotel))) {
if($file_hotel != '.' && $file_hotel != '..') {
$files_hotel[] = $navi_files_hotel . $file_hotel;
// sort($files_hotel);
}
}
closedir($path_hotel);


echo "<option value=\"0\">$title_lodges_index</option>\n";
echo "<optgroup label=\"Villen u. FeWo\">";
$sortArraya = array();
foreach($files_hotel as $f_hotel) {
$content_hotel = file_get_contents($f_hotel);
$pattern_hotel = '=<span>(.*)</span>=i';
preg_match($pattern_hotel, $content_hotel, $matches_hotel);
$sortArraya[$f_hotel] = $matches_hotel[1];
}
asort($sortArraya);
foreach($sortArraya as $f_hotel => $title_hotel) {

mysql_select_db($db_name_pobox);
$_pobox_sucheA = mysql_query("SELECT * FROM `pobox` WHERE `pobox_a` ='".$title_hotel."'");
$_po_isA = mysql_num_rows($_pobox_sucheA);
if ($_po_isA == 1) {

}else{
echo "<option value\"$title_hotel\">$title_hotel</option>\n";
}

} echo "</optgroup>";

?>

Domi
10.09.2009, 15:27:23
so leid es mir tut, verstehe nicht wie genau ich dir helfen kann.

juergen
10.09.2009, 15:34:39
Hallo Domi,

könnte es so gehen? Leider kann ich es erst nach 17:00 Testen!


$navi_files_hotel = "../villen/"; //Ordner mit Dateien
$path_hotel = opendir($navi_files_hotel);
while(false !== ($file_hotel = readdir($path_hotel))) {
if($file_hotel != '.' && $file_hotel != '..') {
$files_hotel[] = $navi_files_hotel . $file_hotel;
}
}
closedir($path_hotel);

$sortArraya = array();
foreach($files_hotel as $f_hotel) {
$content_hotel = file_get_contents($f_hotel);
$pattern_hotel = '=<span>'.$_POST['a'].'</span>=i'; // Ist das so möglich??
preg_match($pattern_hotel, $content_hotel, $matches_hotel);

$_gesuchter_datei_name = $matches_hotel[1];

}
// $_POST['a'] ist der String den ich im Pulldown ausgewählt habe.