ThWboard Support-Forum (Archiv)
Ort: / Boardübersicht / PHP / MySQL Probleme / alle Url's aus einer Datei extrahieren...
Seite 1 von 2 – nächste Seite >>
Luki schrieb am 17.01.2004 um 19:10 Uhr
Ich habe eine komplette HTML Seite in einem String: $content
und möchte aus der nun alle URL's exthrahieren und in eine Datenbank eintragen - dafür muss ich sie zwangsläufig in ein Array schreiben.
Problem nun wie exthrahiere ich alle URL's aus aus der Website und schreibe sie in ein Array?
hat jemand dafür den richtigen Code / Hinweis?
würde mich sehr freuen! - thx
Luki
MrNase schrieb am 17.01.2004 um 19:51 Uhr
Würde mich auch mal interessieren, hab es mal probiert und nach Lösungen gesucht aber nix gefunden :(
Narodnaja schrieb am 18.01.2004 um 00:49 Uhr
also den richtigen Code kann ich dir nicht geben, aber einen Hinweis:
wenn alle deine URLs normale URLs sind, also zb keine Edonkey-Dinger, dann sollten sie ja mit http:// anfangen und mit einem Leerzeichen, einem Komma, einem Punkt ... oh. Punkt und Komma ist dumm, die sind ja auch in den URLs selber.
Weisst du denn wie die URLs aussehen, bzw wie sie im Code stehen ? Hinsichtlich Komma, Punkte, ...
MrNase schrieb am 18.01.2004 um 00:55 Uhr
In meinem Fall kann es auch eine Spiegel.de URL sein und die sehen ja z.B. so aus:
http://www.spiegel.de/wissenschaft/weltraum/0,1518,282031,00.html
Oder einen Link auf das Spiegel.de Forum:
http://forum.spiegel.de/cgi-bin/WebX?13@@.ee758fa
Ähm, oder natürlich auch:
http://www_a-happy_new_year_via_linkart+pics_at_@rtist.info/-_-
Luki schrieb am 18.01.2004 um 11:47 Uhr
okay, ich hab ein Script, das baut alles drumherum einfach ab d.h. entfernt alle Tags die nichts mit URLs zu tun haben, aber das ist leider sehr ressourcefressend!
mir geht es eigentlich nur darum alle URL's (als Ausdruck definiert) zu finden und in ein Array zu schreiben!
theDon schrieb am 18.01.2004 um 12:32 Uhr
$str = "http://www.foo.bar http://www.blah.fasel ftp://127.0.0.1";
$arr = array();
preg_match_all("/(^|[ \n])([a-zA-Z0-9.\-+]+):\/\/([^ \"\n]+?)([\?!,\.]*)(?=[ \"\n]|$)/", $str, $arr);
Luki schrieb am 18.01.2004 um 12:40 Uhr
Array ( [0] => Array ( [0] => http://www.foo.bar [1] => http://www.blah.fasel [2] => ftp://127.0.0.1 ) [1] => Array ( [0] => [1] => [2] => ) [2] => Array ( [0] => http [1] => http [2] => ftp ) [3] => Array ( [0] => www.foo.bar [1] => www.blah.fasel [2] => 127.0.0.1 ) [4] => Array ( [0] => [1] => [2] => ) )
nicht schlecht - big thx
wahhh aber warum ist das sooo geschachtelt?
Array ( [0] => www.foo.bar [1] => www.blah.fasel [2] => 127.0.0.1 )
würde mir genügen ;)
da es übrigens aus einer HTML Datei exthrahiert werden soll kann man auch gerne: <a href="http://********" nehmen ;)
theDon schrieb am 18.01.2004 um 14:26 Uhr
hab jetzt die regex einfach aus dem thwb-src kopiert ;)
die schachtelung liegt an preg_match_all(), aber wenn du einfach arr[0] als array benutzt, hast du ja, was du haben willst.
Luki schrieb am 18.01.2004 um 15:10 Uhr
mmmh und was müsste ich statt preg_match_all() nehmen?
theDon schrieb am 18.01.2004 um 15:24 Uhr
preg_match_all() ist die (fast) einzige möglichkeit.
Luki schrieb am 18.01.2004 um 15:37 Uhr
wie müsste ich diese regex (ich steig da leider immer noch nicht komplett durch abändern, damit es hier exthrahiert wird... :?
$str = '<a href="postops.php?action=delete&postid=38026">Löschen</a>';
$arr = array();
preg_match_all("/(^|[ \n])([a-zA-Z0-9.\-+]+):\/\/([^ \"\n]+?)([\?!,\.]*)(?=[ \"\n]|$)/", $str, $arr);
print_r($arr);
wie durchsuche ich ein komplettes array nach einem begriff und ersetze den falls vorhanden :?
wie spiele ich es am einfachsten in eine Datenbank ein?
theDon schrieb am 18.01.2004 um 17:59 Uhr
foreach($arr[0] as $k => $v)
{
// etwas tun.
}
preg_match_all("/<a href=\"([a-zA-Z0-9.\-+]+):\/\/([^ \"\n]+?)\">/", $str, $arr);
Luki schrieb am 18.01.2004 um 19:12 Uhr
göttlich vielen Dank,
hast du PHP eigentlich schon im Bauch studiert?
theDon schrieb am 18.01.2004 um 19:24 Uhr
nein. aber php ist recht simpel, wenn man ne übersicht mit allen funktionen zur verfügung hat ;)
Luki schrieb am 18.01.2004 um 19:31 Uhr
mmmh meine einzige Ressource ist php.net - wär cool wenn du eine bessere Übersicht hättest ;)
theDon schrieb am 18.01.2004 um 20:13 Uhr
de.php.net ;)
Luki schrieb am 18.01.2004 um 20:22 Uhr
wer hätts gedacht ;)
übrigens gibt es eine einfachere Methode ein Array in eine MySQL einzugeben als:
foreach($arr as $k => $v)
{ Query("INSERT INTO DB (datennr1) VALUES ($arr) ) }
theDon schrieb am 18.01.2004 um 21:08 Uhr
statt Query() $querystring .= "";
und dann Query($querystring);
Luki schrieb am 27.01.2004 um 21:25 Uhr
Müll
Luki schrieb am 31.01.2004 um 18:09 Uhr
Müll
Luki schrieb am 07.02.2004 um 00:58 Uhr
bitte meine letzten 3 Posts hier löschen (erledigt!)
Luki schrieb am 07.02.2004 um 11:05 Uhr
theDon postete
wer hätts gedacht ;)
übrigens gibt es eine einfachere Methode ein Array in eine MySQL einzugeben als:
foreach($arr as $k => $v)
{ Query("INSERT INTO DB (datennr1) VALUES ($arr) ) }
okay mein
$querystring = "INSERT INTO DB (datennr1) VALUES (input); INSERT INTO DB (datennr2) VALUES (input); INSERT INTO DB (datennr3) VALUES (input); ";
schaut dann so aus. - allerdings wenn ich den mit Query($querystring); einspielen möchte klappt das nicht, was mache ich da falsch?
MrNase schrieb am 07.02.2004 um 11:12 Uhr
Doch nicht löschen?
Chris_HighHat schrieb am 07.02.2004 um 12:10 Uhr
machma unter deine Query echo nysql_error(), der sagt dir dann wo der Fehler is ;)
Luki schrieb am 07.02.2004 um 12:32 Uhr
hilft leider nicht viel weiter:
das ist der query wenn ich ihn per echo ausgebe
INSERT INTO datenb (news, time) VALUES ('<a href="news/meldung/44400">Daten1</a>', '1076152838');
INSERT INTO datenb (news, time) VALUES ('<a href="news/meldung/44393">Daten2</a>', '1076152838');
INSERT INTO datenb (news, time) VALUES ('<a href="news/meldung/44389">Daten3</a>', '1076152838');
das ist die errormeldung
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ';
INSERT INTO datenb (news, time) VALUES ('<a href="n
Seite 1 von 2 – nächste Seite >>