kostenloser Webspace werbefrei: lima-city


Daten mit preg_match auslesen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    fly-europe

    fly-europe hat kostenlosen Webspace.

    Hallo ;)
    Ich will eine erweiterte Funktion im preg_match() benutzen. Ich möchte damit Daten auslesen. Und zwar mit einem Platzhalter: (.*?)

    Leider gibt es immer einen Error wie folgt:
    Warning: preg_match(): Unknown modifier 'I' in /var/www/web73/html/AWM/Sven/link.php on line 18

    Warning: preg_match(): Unknown modifier 'T' in /var/www/web73/html/AWM/Sven/link.php on line 22

    Warning: preg_match(): Unknown modifier 'C' in /var/www/web73/html/AWM/Sven/link.php on line 26

    Warning: preg_match(): Unknown modifier '(' in /var/www/web73/html/AWM/Sven/link.php on line 30

    Warning: preg_match(): Unknown modifier 'L' in /var/www/web73/html/AWM/Sven/link.php on line 34

    Warning: preg_match(): Unknown modifier 'L' in /var/www/web73/html/AWM/Sven/link.php on line 38

    Der COde beginnend ab Zeile 17

    <?php
        $regex = '<td width="40%" bgcolor="C0C0C0">ICAO ID</td><td width="60%" bgcolor="F0F0F0">(.*?)<tr>';
        if (preg_match($regex,$data,$matches))
        $icao = $matches[0];
    
        $regex = '<td width="40%" bgcolor="C0C0C0">Time</td><td width="60%" bgcolor="F0F0F0">UTC(.*?)(+2DT)<tr>';
        if (preg_match($regex,$data,$matches))
        $timezone = $matches[0];
    
        $regex = '<td width="40%" bgcolor="C0C0C0">Country</td><td width="60%" bgcolor="F0F0F0">(.*?)<tr>';
        if (preg_match($regex,$data,$matches))
        $country = $matches[0];
    
        $regex = '<h3>(.*?)</h3>';
        if (preg_match($regex,$data,$matches))
        $name = $matches[0];
    
        $regex = '<td width="40%" bgcolor="C0C0C0">Latitude</td><td width="60%" bgcolor="F0F0F0">51.289453<BR>51&deg; (.*?)<tr>';
        if (preg_match($regex,$data,$matches))
        $latitude = $matches[0];
    
        $regex = '<td width="40%" bgcolor="C0C0C0">Longitude</td><td width="60%" bgcolor="F0F0F0">6.766775<BR>006&deg; (.*?)<tr>';
        if (preg_match($regex,$data,$matches))
        $longitude = $matches[0];
        echo $name.":".$country.":".$icao.":".$timezone.":".$latitude.":".$longitude."<br>";
    ?>



    Beitrag geändert: 14.11.2007 19:36:14 von fly-europe
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Du solltest bei RegEx immer noch einen Begrenzer verwenden, damit PHP wei&#223;, wann der RegEx zu Ende ist. Am besten ist daf&#252;r ein Zeichen, das nicht so h&#228;ufig verwendet wird, das also nur mit sehr geringer Wahrscheinlichkeit im String vorkommt. Ich verwende meist '~meinregex~optionaleModifier'
  4. Hi fly-europe,

    Du musst am Anfang und ende ein // einf&#252;gen
    also aus

    $regex = '<td width=\\"40%\\" bgcolor=\\"C0C0C0\\">ICAO ID</td><td width=\\"60%\\" bgcolor=\\"F0F0F0\\">(.*?)<tr>';


    wird

    $regex = '/<td width=\\"40%\\" bgcolor=\\"C0C0C0\\">ICAO ID</td><td width=\\"60%\\" bgcolor=\\"F0F0F0\\">(.*?)<tr>/';


    Dann sollte noch der slash (bzw. Endtag) escapted werden. Sollte dann so aussehen

    $regex = '/<td width=\\"40%\\" bgcolor=\\"C0C0C0\\">ICAO ID<\/td><td width=\\"60%\\" bgcolor=\\"F0F0F0\\">(.*?)<tr>/';


    Ob Du das " doppelt escapen (also \\) weiss ich nicht.

    Hier noch ein Link um Deine regul&#228;ren Ausdr&#252;cke zu testen:
    http://regexlib.com/RETester.aspx

    MfG
    Ceicodad

  5. Hi fly-europe,

    Du musst am Anfang und ende ein / einf&#252;gen
    also aus

    $regex = '<td width=\\"40%\\" bgcolor=\\"C0C0C0\\">ICAO ID</td><td width=\\"60%\\" bgcolor=\\"F0F0F0\\">(.*?)<tr>';


    wird

    $regex = '/<td width=\\"40%\\" bgcolor=\\"C0C0C0\\">ICAO ID</td><td width=\\"60%\\" bgcolor=\\"F0F0F0\\">(.*?)<tr>/';


    Dann sollte noch der slash (bzw. Endtag) escapted werden. Sollte dann so aussehen

    $regex = '/<td width=\\"40%\\" bgcolor=\\"C0C0C0\\">ICAO ID<\/td><td width=\\"60%\\" bgcolor=\\"F0F0F0\\">(.*?)<tr>/';


    Ob Du das " doppelt escapen (also \\) weiss ich nicht.

    Hier noch ein Link um Deine regul&#228;ren Ausdr&#252;cke zu testen:
    http://regexlib.com/RETester.aspx

    MfG
    Ceicodad


  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!