preg_match als array um Hostnamen zu filtern?

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

  • preg_match als array um Hostnamen zu filtern?

    Hallo!

    Ich versuche mich grade an einen Teil im Script der die Hostnamen herausfiltern soll. Leider bekomme ich kein Ergebnis was mir zu sagt:

    PHP-Code:
    <?php

        $neu_link 
    "http://www.google.de/search?hl=&q=*Max+Muster+Musterstr.+10+99999+Musterhausen";
        
    $seite file_get_contents($neu_link);

        
    preg_match ('@^(?:http://)?([^/]+)@i'"$seite"$result);
        
    $host  $result[1];

        
    preg_match('/[^.]+\.[^.]+$/'$host $result);

        
    $resulthtml = array();
        foreach (
    $result as $r) {
        
    $resulthtml[] = array('url' => htmlentities($r[1]),);
        }

        echo 
    '<pre>';
        
    print_r($resulthtml);
        echo 
    '</pre>';

        
    $resultlist[0] = array();
        foreach (
    $result as $r) {
        
    $resultlist[] = array('url' => $r[1]);
        }
    ?>
    Folgende Script funktioniert mit Manuel eingegeben Adresse super:

    PHP-Code:
    <?php

        $neu_link 
    "http://www.google.de/search?hl=&q=*Max+Muster+Musterstr.+10+99999+Musterhausen";

        
    preg_match ('@^(?:http://)?([^/]+)@i'"$neu_link"$result);
        
    $host  $result[1];

        
    preg_match('/[^.]+\.[^.]+$/'$host $result);
        Echo 
    "Der Domänen-Name lautet: {$result[0]}\n";

    ?>
    Ich wollte per Script für 10 URLs / Hostnamen auch nur 10 Zeilen haben... hab zwar eine Script mit preg_match_all was funktioniert, wo aber dass Such Ergebnis unzureichend ist da mir die kompletten teilweise ca 100 oder mehr Zeichen langen URLs anzeigt:

    PHP-Code:
    <?php

    $neu_link 
    "http://www.google.de/search?hl=&q=*Max+Muster+Musterstr.+10+99999+Musterhausen";
    $seite file_get_contents($neu_link);

    preg_match_all('/<h3[^>]*><a[^>]+href="([^"]*)"[^>]*>(.+?)<\/a>/'$seite$resultPREG_SET_ORDER);

    $resulthtml = array();
    foreach (
    $result as $r) {
    $resulthtml[] = array('url' => htmlentities($r[1]),);
    }
    echo 
    '<pre>';
    print_r($resulthtml);
    echo 
    '</pre>';

    $resultlist = array();
    foreach (
    $result as $r) {
    $resultlist[] = array('url' => $r[1]);
    }
    ?>
    Ich suche also entweder Hilfe beim letzten Script um dort die Suchaktion auf das Level des zweiten Scripts zu bekommen (Reguläre Ausdrücke) Oder bei Zweiten Script das vorzeigebare mit array zu arbeiten. Soll in einen Script integriert werden was ich schon einige Themen unter diesen erwähnt habe

    lg

    CC

  • #2
    Nimm doch einfach parse_url
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      Hi unset,

      ich kann doch mit parse_url nur eine URL von Seite zu Seite übergeben?

      Ich brauche aber ein Script was ca 10-12 URLs auf einer Seite findet und diese auch ausgibt damit ich dieser wieder an die Datenbank weiter geben kann.

      Liebe Grüße

      CC

      Kommentar


      • #4
        Sooo nach langem Suchen, habe ich in Englischsprachigen Foren einiges gefunden.

        preg_match als array funktioniert nicht!

        Alternativ geht es aber mir preg_replace

        Beispiel #2 Die Verwendung von preg_replace() mit indizierten Arrays

        PHP-Code:
        <?php
        $zeichenkette 
        'Der schnelle braune Fuchs sprang über den faulen Hund.';

        $suchmuster = array();
        $suchmuster[0] = '/schnelle/';
        $suchmuster[1] = '/braune/';
        $suchmuster[2] = '/Fuchs/';

        $ersetzungen = array();
        $ersetzungen[2] = 'Bär';
        $ersetzungen[1] = 'schwarze';
        $ersetzungen[0] = 'langsame';

        echo 
        preg_replace($suchmuster$ersetzungen$zeichenkette);
        ?>
        Quelle: PHP: preg_replace - Manual

        Versuche es mal morgen ^^ und melde poste mein Ergebnis für die, die wie ich auf der Suche nach dieser Funktion sind.

        lg

        CC

        PS: frohes neues Jahr!

        Kommentar


        • #5
          Falscher Ansatz. Du willst doch nichts ersetzen, du willst nur finden. Und du brauchst auch kein Array.
          Um alle Hostnamen im Quelltext einer Seite zu finden, genügt es, einen einzigen regulären Ausdruck zu konstruieren. Diesen Ausdruck verfütterst du dann an preg_match_all().

          Versuchs mal damit: /(href|src)=(["'])([^\/]//)?(.*)(\/[^$2]*)?$2/Ui

          Wenn das Gesucht in den $matches ist, kannst du den Ausdruck ja noch verfeinern, z.B. mit non-capturing subpatterns.
          Zuletzt geändert von onemorenerd; 02.01.2011, 00:14.

          Kommentar


          • #6


            Dann versuche ich es mal mit deinem vorschlag und poste im laufe des tages mein Ergebnis

            Kommentar


            • #7
              Hi

              hat leider nicht funktioniert

              Fehler:
              Parse error: syntax error, unexpected ']' in /www/htdocs/w00644be/script/test8.php5 on line 6

              PHP-Code:
              <?php

              $neu_link 
              "http://www.google.de/search?hl=&q=*Muster+Müller+Musterstr.+1+99999+Musterstadt";
              $seite file_get_contents($neu_link);

              preg_match_all('/(href|src)=(["'])([^\/]/)?(.*)(\/[^$2]*)?$2/Ui', $seite, $result, PREG_SET_ORDER);

              $resulthtml = array();
              foreach ($result as $r) {
              $resulthtml[] = array('
              url' => htmlentities($r[1]),);
              }
              echo '
              <pre>';
              print_r($resulthtml);
              echo '
              </pre>';

              $resultlist = array();
              foreach ($result as $r) {
              $resultlist[] = array('
              url' => $r[1]);
              }

              ?>
              Ich habe schon versucht

              '/<h3[^>]*><a[^>]+href="([^"]*)"[^>]*>(.+?)<\/a>/'

              so abzuändern, dass er mir die Links nur bis zum dritten "/" anzeigt aber ohne erfolg

              Liebe Grüße

              CC

              Kommentar


              • #8
                Die Fehlermeldung ist aber eindeutig. Anhand des Syntax Highlightings solltest Du hier im Forum schon sehen, wo der Fehler liegt. Kleiner Tip: Du hast ein Zeichen nicht escaped.
                MM Newmedia | MeinBlog

                Kommentar

                Lädt...
                X