URL extrahieren

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • URL extrahieren

    Hi,

    vielleicht kann mir ja hier jemand helfen.
    Ich würde gerne aus diesem Bannercode nur die URL extrahieren. Alles andere kann weg. Wie kann ich das realsieren?

    Mit str_replace oder muss ich eine Funktion schreiben?

    HTML Code:
    <a href=http://www1.belboon.de/adtracking/xxxxxx.html" target="_blank">xxxxxx</a><img src="http://www1.belboon.de/adtracking/xxxxxx.img" border="0" width="1" height="1" />"

  • #2
    Was meinst du? http://www1.belboon.de/adtracking/xxxxxx.html oder xxxxxx

    Peter
    Last edited by Kropff; 02-12-2014, 15:49.
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Comment


    • #3
      Originally posted by joern View Post
      Ich würde gerne aus diesem Bannercode nur die URL extrahieren.
      Dein Beispiel-HTML-Ausschnitt enthält zwei URLs. Ich nehme mal an, du meinst die erste.

      Alles andere kann weg. Wie kann ich das realsieren?
      Am einfachsten mit preg_match().

      Mit str_replace oder muss ich eine Funktion schreiben?
      Str_replace() würde hier nicht helfen. Es auch oft nicht das, was der Anwender eigentlich wollte.

      Eine eigene Funktion kannst du schreiben, wenn das deinen Quellcode übersichtlicher macht.

      HTML Code:
      <a href=http://www1.belboon.de/adtracking/xxxxxx.html" target="_blank">xxxxxx</a><img src="http://www1.belboon.de/adtracking/xxxxxx.img" border="0" width="1" height="1" />"
      Ich hoffe, das HTML bekommst du nicht so geliefert. Das href-Attribut, dessen Inhalt wir extrahieren wollen, spart sich am Anfang die Hochkommas, hat aber am Ende welche. Das verkompliziert das Suchmuster:

      href=: Wir suchen zuerst nach "href=".
      "?: Dann überspringen wir ein eventuell vorhandenes '"'.
      (\S+?): Danach wird alles eingesammelt, was kein Leerzeichen ist.
      (?=[\s>]): Die Suche bricht ab, wenn ein Leerzeichen oder ein ">" auftaucht.
      "?: Dabei überspringen wir wieder ein eventuell auftauchendes '"'.

      PHP Code:
      function url_extract(
          
      $htmlsoup,
          
      $decode_entities true
      ) {
          
      $url preg_match('/href="?(\S+?)"?(?=[\s>])/'$htmlsoup$h) ? $h[1] : null;
          return 
      $decode_entities
              
      htmlspecialchars_decode($urlENT_QUOTES)
              : 
      $url;

      In HTML eingebettete URLs enthalten manchmal speziell kodierte Zeichen. Htmlspecialchars_decode() sorgt dafür, dass die entsprechend dekodiert werden.

      Ein einfacher Test zeigt die Funktionstüchtigkeit:
      PHP Code:
      $tests = array (
          
      '<a href=http://www1.belboon.de/adtracking/xxxxxx.html" target="_blank">xxxxxx</a>',
          
      '<a href="http://www1.belboon.de/adtracking/xxxxxx.html" target="_blank">xxxxxx</a>',
          
      '<a href=http://www1.belboon.de/adtracking/xxxxxx.html target="_blank">xxxxxx</a>',
          
      '<a href=http://www1.belboon.de/adtracking/xxxxxx.html>',
          
      '<a href=http://www1.belboon.de/adtracking/xxxxxx.html?query&a&amp;b>',
      );

      foreach (
      $tests as $htmlsoup) {
          
      $url url_extract($htmlsoup);
          
      var_dump($url);

      ... und für komplexeres (X)HTML gibts übrigens Parser.
      Last edited by fireweasel; 06-12-2014, 16:32. Reason: typos
      Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

      Comment

      Working...
      X