preg_match

Hallo,

ich würde gerne eine Seite mit „cURL“ und „preg_match“ auslsen!

Es gibt zwei Möglichkeit:

http://www.musterdomain.de

oder

www.musterdomain.de

Ich würde gerne nur die Domains nach dem Schema „www.musterdomain.de
auslesen!

Hat jemand eine Idee … wie man das mit „preg_match“ umsetzt?

Danke! Andreas.

Moin!

Das sollte so gehen:

preg\_match\_all ('#(?:http\://)((?:[a-z][a-z\d\-]\*\.)+[a-z]{2,})#is', $sHtml, $aResults);

Ist ungetestet, sollte aber auf gültige FQDNs passen. Musst du mal schauen. Im Übrigen nutze ich hier preg_match_all(), da ich davon ausgehe, dass es mehrere URLs geben wird. Das Ergebnis kannst du mit var_dump($aResults); ausgeben, dann siehst du, wie du weiterverarbeiten kannst.

MfG
Lutz

preg_match_all
(’#(?:http://)((?:[a-z][a-z\d-]*.)+[a-z]{2,})#is’, $sHtml,
$aResults);

Hallo Lutz,

danke für deine Antwort!

Hast recht mit preg_match_all … macht mehr Sinn.

Mein Problem ist leider noch nicht richtig gelöst…

Folgenes Problem: Ich möchte eine Seite mit cURL auslesen…
das klappt auch soweit gut! In der Seite sind einerseits
Domains nach dem Schema „http://www.beispiel.de“ oder
http://www.beispiel.info"!!
Anderseits sind aber auch Adressen nach dem Schema
www.beispiel.de“ oder „beispiel.info“ in der
Seite - und genau diese möchte ich haben!

Gruß, Andreas.

Ups, hab ein „?“ vergessen:

preg_match_all
(’#(?:http://)?((?:[a-z][a-z\d-]*.)+[a-z]{2,})#is’, $sHtml,
$aResults);

anstatt:

preg_match_all
(’#(?:http://)((?:[a-z][a-z\d-]*.)+[a-z]{2,})#is’, $sHtml,
$aResults);

Sorry.

Klappt es jetzt?

Alternativ kannst du den ersten Teil (?:http://)? auch weglassen, ist Geschmackssache.

Klappt es jetzt?

Hallo,

leider klasppts überhaupt nicht!

Probier´s mal bitte …

Gruß, Andreas

Hi,

Anderseits sind aber auch Adressen nach dem Schema
www.beispiel.de“ oder „beispiel.info“ in der
Seite - und genau diese möchte ich haben!

URLs ohne das eindeutige http-Protokoll zu finden, ist 100%ig gar nicht möglich, aber mal ein erster Ansatz:
Die Suche kann entweder exakt mit der negativen Lookbehind-Assertion:
(?

Hallo Ingo!

Danke für deine Antwort!

Irgendwie kann ich es einfach nicht glauben …
das es nicht funktioniert …

www.musterdomain.de oder www.musterdomain.info

zu erkennen???!!!

URLs wie http://www.musterdomain.de oder
http://www.musterdomain.info sollen ignoriert werden!

Gruß, Andreas.

Hi,
warum sollte das nicht funktionieren? Hast Du mal versucht, meine Ansätze einfach zusammenzufügen?

Eine passende RegEx für die aufgezeigten einfachen Fälle wäre:
\b(?

Gruß
Ingo

Hallo Ingo,

danke für die Hilfe!

Ich habe jetzt mam folgendes probiert!

$kis = „domain1.dedomain2.infodomain3.com“;

preg_match_all("#(?

… mit folgenden Ergebnis:

Array
(
[0] => Array
(
[0] => ww.domain
[1] => domain1.de
[2] => ww.domain
[3] => domain2.info
[4] => ww.domain
[5] => domain3.com
)

[1] => Array
(
[0] => ww.domain
[1] => domain1.de
[2] => ww.domain
[3] => domain2.info
[4] => ww.domain
[5] => domain3.com
)

[2] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] =>
)

)