Ankündigung

Einklappen
Keine Ankündigung bisher.

von Link href und target ermitteln

Einklappen

Neue Werbung 2019

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

  • von Link href und target ermitteln

    Hallo

    Ich versuche verzweifelt den "href" und falls vorhanden den "target" zu ermitteln
    doch leider ohne Erfolg.

    Ich habe auch schon dieses wundervolle Erklärung gelesen, doch irgenwie trifft Sie in PHP nicht ganz so zu, oder ich mache etwas falsch:
    http://www.danielfett.de/internet-un...ere-ausdruecke


    Hier wäre mal mein bisheriger Lösungsansatz:
    PHP-Code:
    $selected_link_html '<a href="firma" target="_blank">Firma Link</a>';

    if(
    preg_match('/(href="(.+)")(target="(.+)")?/',$selected_link_html,$matches)) { 
       
    print_r($matches);

    Doch irgenwie kriege ich nur den target zurück wenn der vorhanden ist sonst nichts.

    Irgenwie muss ich doch sagen das die position von beiden egal ist und der target nicht unbedingt vorhanden sein muss. Das Fragezeichen habe ich gelesen dass es sagt dass ein Wert nicht unbedingt vorkommen muss.

    Hoffe mir kann da jemand einen Tip geben. Danke im voraus.

  • #2
    ja, mach das ganze mit DOM in PHP, das ist sauberer.

    Kommentar


    • #3
      Hey Danke Dir maxorxy für den tollen Tip. Wusste gar nichts von dem DOM.

      Ein test von mir welches den href zurück gibt:
      PHP-Code:
      $selected_link_html '<a href="firma" target="_blank">Firma Link</a>';
      $dom = new DOMDocument;
      $dom->loadHTML($selected_link_html);
      $href $dom->getElementsByTagName('a')->item(0);
      print_r($href->getAttribute('href')); 

      Kommentar


      • #4
        $href = $dom->getElementsByTagName('a')->item(0);
        print_r($href->getAttribute('href'));
        Bitte verwende passende Variablennamen, sonst siehst Du später nicht mehr durch. In $href befindet sich hier ein DOM-Knoten, kein href.

        Kommentar


        • #5
          Hey danke Dir Nikosch. Ich nehme deinen Tip sehr gern an.

          Doch was meinst Du mit:
          In $href befindet sich hier ein DOM-Knoten, kein href

          Kommentar


          • #6
            Was an der AUssage ist Dir nicht klar?

            Kommentar


            • #7
              Zitat von strub Beitrag anzeigen
              Hey danke Dir Nikosch. Ich nehme deinen Tip sehr gern an.

              Doch was meinst Du mit:
              PHP-Code:
              $selected_link_html '<a href="firma" target="_blank">Firma Link</a>';
              $dom = new DOMDocument;
              $dom->loadHTML($selected_link_html);
              $a $dom->getElementsByTagName('a')->item(0);
              print_r($a->getAttribute('href')); 

              Kommentar


              • #8
                Zitat von strub Beitrag anzeigen
                Hey danke Dir Nikosch. Ich nehme deinen Tip sehr gern an.

                Doch was meinst Du mit:
                Mit der Aussage ist gemeint dass du Variablen nach ihrem Inhalt benennen sollst.

                getElementsByTagName() liefert dir ein DOMNodeList-Objekt, und dessen Funktion item() liefert dir ein DOMNode Objekt. Das geht aus deinen Variablennamen nicht hervor.

                Das bedeutet wenn das Script komplexer wird, weißt du irgendwann nicht mehr ob in $href nun tatsächlich der String aus dem href-Attribut steht oder das DOMNode-Objekt. Im schlimmsten Fall überschreibst du das DOMNode-Objekt mit etwas anderem was tatsächlich den href-String repräsentiert.

                $oNodeA wäre eine passendere Bezeichnung. "o" für den Datentyp Objekt, "Node" als Abkürzung für DOMNode, und "A", weil das DOMNode Objekt ein a-Tag repräsentiert.

                Kommentar


                • #9
                  ob in $href nun tatsächlich der String aus dem href-Attribut steht oder das DOMNode-Objekt.
                  Zumal das href-Attribut noch einmal einen anderen Knoten darstellt. href ist also in jedem Fall falsch.

                  Kommentar


                  • #10
                    Aha ok so habt Ihr es gemeint. Da werte ich auf jeden Fall achten in Zukunft. Danke allen für die wertvollen Tips.

                    Kommentar

                    Lädt...
                    X