Bestimmten Link filtern

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

  • Bestimmten Link filtern

    Hi Ich hab folgendes Problem:
    Ich möchte auch mehreren Links einen bestimmten herausfinden.

    Code:
    $name = 'beispiel';
    $txt = '
    
    <a href="http://beispiel.de/toll.php"><strong>test</strong></a><a href="http://beispiel.de/die_will_ich.php"><strong>beispiel</strong></a>
    
    function get_link ($name, $txt) {
             $regex  = '#<a.*?href="(.*?)".*?>' .$name. '</#';
             preg_match ($regex, $txt, $match);
    
             return $match[1];
    }
    Hab dafür folgenden Code mit RegEx der auch funktioniert, mir aber immer nur den ersten Link ausgibt und nicht den mit dem $name 'beispiel' den ich haben will. Jemand eine Idee ohne mit strpos und substrings zu arbeiten ?

    Vielen Dank, ich freue mich auf Denkanstöße, da ich schon seit 4 Stunden ohne Erfolg rumprobiere

  • #2
    Hallo,

    dieser Regex dürfte gar keinen der beiden Links finden, da du $name direkt zwischen die Spitzklammern baust und damit keinen Platz für das strong-Element lässt.

    Gruß,

    Amica
    Zuletzt geändert von AmicaNoctis; 13.01.2012, 09:15.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Mit DOM und XPATH solltest du alle Links finden können und kannst bequem auf die href Attribute zugreifen.
      Wir werden alle sterben

      Kommentar


      • #4
        Zitat von AmicaNoctis Beitrag anzeigen
        Hallo,

        dieser Regex dürfte gar keinen der beiden Links finden, da du $name direkt zwischen die Spitzklammern baust und damit keinen Platz für das strong-Element lässt.

        Gruß,

        Amica
        Tue ich aber Oo ?
        Okay ich schau mir DOM mal genauer an.

        Wow DOM ist großartig
        Aber wie ich das jetzt sehe werden alle Links keinem key im Array zugewiesen, sprich wie genau kann ich das ändern, sodass es einfacher fällt den richtigen Link anhand des Attributs zu finden ?

        Mein Code (von http://www.phpro.org/examples/Get-Links-With-DOM.html)

        Code:
        function getLinks($link)
            {
                /*** return array ***/
                $ret = array();
        
                /*** a new dom object ***/
                $dom = new domDocument;
        
                /*** get the HTML (suppress errors) ***/
                @$dom->loadHTML(file_get_contents($link));
        
                /*** remove silly white space ***/
                $dom->preserveWhiteSpace = false;
        
                /*** get the links from the HTML ***/
                $links = $dom->getElementsByTagName('a');
            
                /*** loop over the links ***/
                foreach ($links as $tag)
                {
                    $ret[$tag->getAttribute('href')] = $tag->childNodes->item(0)->nodeValue;
                }
        
                return $ret;
            }
        print_r("http://www.testdomain.de");
        Zuletzt geändert von gruenertag; 13.01.2012, 10:10.

        Kommentar


        • #5
          Vergleiche einfach $tag->textContent mit dem von dir gesuchten Linktitel.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            Danke für die schnelle Antwort
            Ich bin leider nicht sonderlich fit in DOM bzw Klassen/Attribute in PHP.

            Code:
            $test[$tag->textContent('beispiel')] = ?
            return $test;
            Kannst du mir vllt sagen wie genau ich das ganze Vergleiche ?

            Danke für Hilfe und Tipps

            Kommentar


            • #7
              Warum siehst du nicht ins Handbuch? Warum liest du dir nicht die Fehlermeldungen durch, die PHP auswirft? Anwelcher Stelle habe ich gesagt, dass textContent eine Methode ist?
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                shame on me
                Habe bis heute allerdings noch nie mit Klassen/Methoden etc. in php gearbeitet.
                Ich fux mich durch, danke nochmal.

                Kommentar


                • #9
                  Irgendwie werde ich da nicht schlau draus, kann mir jemand eine Starthilfe geben ?

                  Kommentar

                  Lädt...
                  X