Links aus HTML-Datei auslesen

Kaeschdin

Erfahrenes Mitglied
Hallo,

ich habe eine HTML-Datei mit sehr vielen Verlinkungen auf Dateien. Jetzt möchte ich die Datei nach diesen Verlinkungen durchsuchen. Als Ausgabe möchte ich den Dateinamen haben. Für den ersten Link hab ich das auch geschafft:

PHP:
$url = "quelltext_textbausteine_partner.html";
$text=implode("\n",file($url));
$before="zip/";
$after="\" target";
$str=substr($text,strpos($text,$before)+strlen($before));
$str=substr($str,0,strpos($str,$after));
echo $str;

Vor dem Dateinamen befindet sich innerhalb der Link-URL immer ein zip/ und nach dem Dateinamen ein " target.

WIe gesagt hab ich es für den ersten Link geschafft. Aber wie bekomme ich es hin, dass die Datei weiter durchsucht wird und mir am Ende untereinander alle gefundenen Dateinamen ausgibt? Ich vermute, das geht über Arrays, aber mir fehlt der Einstieg :(
 
Ich denke mit RegEx und einer ereg_ Funktion müsste das kein Problem sein. Leider hab ich das noch nicht so drauf ... ich probier trotzdem mal :-)
PHP:
$url = "quelltext_textbausteine_partner.html";
$text=explode("\n",file($url));

$pattern = "/(zip\\\\)(.*?)(\" target)*/u";
$replace = "$1<br>";
while(list($var) = each($text)) echo ereg_replace($pattern, $replace, $var);
(!) Keine Garantie auf Richtigkeit (!)

Hab grad selbst gemerkt das die letzte Zeile Mist ist. Weißt grad aber nicht wie ich das richtig machen könnte ...
 
Zuletzt bearbeitet:
Funktioniert leider nicht. Fehler heißt "Warning: ereg_replace(): REG_BADRPT: repetition-operator operand invalid in C:\xampp\htdocs\auslesen4.php on line 7" :(
 
Hallo....

versuchs mit preg_match_all() ;)

Code:
<?php

$url = "quelltext_textbausteine_partner.html";
$text=implode("\n",file($url));
preg_match_all('/<a\s[^>]*href="zip\/(.*?)"/i',$text,$out);
echo implode('<br>',$out[1]);
?>
 
Entweder hast du dich beim Kopieren meines Codeschnipsels vertan.... der funktioniert nämlich ...

oder die Links entsprechen nicht deiner Beschreibung!
Ist die "quelltext_textbausteine_partner.html" irgendwo online?
 
Zuletzt bearbeitet:
Suchst du nach dem Linktext oder nach den Verlinkungen?

Also meine Datei heißt zum Beispiel datei.txt und liegt im Verzeichnis zip. Der Linkname aber heißt zum Beispiel "Hier geht es zur gesuchten Datei". Die Verlinkung wäre .../zip/datei.zip.

Die Datei ist nicht online.
 
Ich suche garnix:-)

Du suchst angeblich nach den Linkadressen... mein Codeschnipsel auch...und der findet diese auch.

Ansonsten poste doch mal den Inhalt dieser "quelltext_textbausteine_partner.html", stelle sie Online oder hänge sie hier ran... meine Kristallkugel ist grad defekt :suspekt:
 
Wärst du so lieb, mir folgende Zeile zu erklären?

preg_match_all('/<a\s[^>]*href="zip\/(.*?)"/i',$text,$out);

$text und $out sind klar.

Dankeschön.
 
Ich glaube, ich weiß jetzt, was der Fehler ist.

Eine der Dateien (nämlich die, die ich mit meinem ersten Codeschnipsel gefunden habe) liegt im Verzeichnis "_zip" und ist eine Zip-Datei. Alle anderen Dateien liegen im Verzeichnis "TB_Partner_Hersteller" und sind doc-Dateien.

Dann kann der Code natürlich nicht funktionieren. Alle Dateien haben die Gemeinsamkeit, dass der Dateiname mit "TB_" beginnt.

Sorry für die ungewollte Irreführung :(

Wie im vorherigen Posting geschrieben, fehlen mir die Kenntnisse, die preg_match_all-Zeile richtig zu interpretieren. Aber ich glaube, ich muss Dir auch noch sagen, dass die Links nicht per <a href="http://..."> verlinkt sind, sondern per <a id="_ctl2_myDataGrid__ctl9_docLink" href="http://...">. Wobei die Ziffern von Link zu Link variieren.
 
Zuletzt bearbeitet:
Zurück