kostenloser Webspace werbefrei: lima-city


RegEx Problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.

    Hallo,
    hab mir jetzt ein bischen RegEx angeschaut,
    aber irgendwie geht das nicht so wie ich es will ...

    Also ich hab einen String in dem x mal href=\"ordner/datei.php?ID= drinnen steht.
    Jedes mal steht hinter dem = eine andere Zahl.
    Und diese Zahl möchte ich nun eben auslesen.

    Hab so probiert:
    $regex = \'+href=\"ordner/datei.php?ID=(.*)\"+\'; 
      // also es ist ein Link, und nach dem (.*) muss 
      // ich ja was reintun damit er weiß wann er nicht mehr einlesen muss, oder?
      // als Delimiter hab ich + genommen, denke mal das stört nicht ...
    if(preg_match($regex, $fcontent, $matches))
    {
       print_r($matches);
    }

    Also Ausgabe bekomme ich hier immer nichts, also er geht nicht ins if hinein... :(
    Was kann da nicht stimmen?

    Oder habt ihr eine bessere Lösung für mein Problem?
    Hab schon an strtok() getacht, aber dann ist mir RegEx eingefallen ...

    Edit: Hat sich erledigt, zumindest gehts jetzt mit RegEx.
    Aber vielleicht hat ja jemand eine bessere Idee ...

    Beitrag geändert: 26.6.2008 16:59:23 von philippkern
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Also ich hab das mal mit deiner Homepage als Testbeispiel gemacht ;-)

    <?php
        $fcontent = implode(\'\', file(\'http://thekern.de\'));
        $regex = \'/(\\\\?p\\\\=)([A-z]+)/i\';
        
        $res = preg_match_all($regex, $fcontent, $matches);
        if($res > 0)
        {
            echo \"Found: \".$res.\"<br />\\n\";
            print_r($matches[2]);  // 2 = 2. Klammerausdruck  ; 
                                   // 0= gesamtes Match ; 1= 1. Klammerausdruck
        }
        else
        {
            echo \"nix\";
        }
    ?>


    Bei deinem Beispiel muß man natürlich dann das p= und die Buchstaben gegen Zahlen ersetzen.
    $regex = \'/(\\\\?ID\\\\=)([0-9]+)/i\';


    Kleines Tutorial:
    die / am Anfang und Ende Trennen Blöcke um das i für \"case insensitive\"
    das \\ ist zum Entquoten
    das ? ist in diesem Fall (da entquotet) also ein String
    die () unterteilen den Ausdruck in Abschnitte die man später seperat abfragen kann (deshalb auch die 2 bei $matches[2])
    die [] umschließen alle möglichen Zeichen die sein dürfen
    das + sagt aus, dass die zeichen in [] 1..n mal vorkommen dürfen

    Grüßle



    Beitrag geändert: 26.6.2008 17:45:42 von scout
  4. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.

    HAst du mein edit gelesen, oder soll das eine neue Anregung sein, wie mans besser machen kann?
    Trotzdem vielen Dank. ;)

    Mein RegEx: $regex = \'#href=\"ordner/datei\\.php\\?ID=(.*?)\"#\';
  5. habs übersehen - sorry.
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!