Daten mit preg_match auslesen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfang
auslese
aussehen
benutzen
code
country
datum
ende
erweiterte funktion
geringer wahrscheinlichkeit
http
match
platzhalter
ren
string
testen
verwenden
zeichen
zeile
-
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° (.*?)<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° (.*?)<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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du solltest bei RegEx immer noch einen Begrenzer verwenden, damit PHP weiß, wann der RegEx zu Ende ist. Am besten ist dafür ein Zeichen, das nicht so häufig verwendet wird, das also nur mit sehr geringer Wahrscheinlichkeit im String vorkommt. Ich verwende meist '~meinregex~optionaleModifier'
-
Hi fly-europe,
Du musst am Anfang und ende ein // einfü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ären Ausdrücke zu testen:
http://regexlib.com/RETester.aspx
MfG
Ceicodad
-
Hi fly-europe,
Du musst am Anfang und ende ein / einfü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ären Ausdrücke zu testen:
http://regexlib.com/RETester.aspx
MfG
Ceicodad
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage