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 >>