RegEx Problem
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfragen
abschnitt
anregung
auslese
bessere idee
buchstabe
code
datei
einlesen
file
gemacht code
http
jemand
match
ordner
re
string
trennen
zahl
zeichen
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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=(.*?)\"#\'; -
habs übersehen - sorry.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage