URL extrahieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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
    Zuletzt geändert von Kropff; 02.12.2014, 16:49.
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Zitat von joern Beitrag anzeigen
      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.
      Zuletzt geändert von fireweasel; 06.12.2014, 17:32. Grund: typos
      Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

      Kommentar

      Lädt...
      X