Hilfe bei reg_match()

Cusco

Erfahrenes Mitglied
Hi,

ich brauche hilfe bei preg_match(), ich komme mit den Pattern nicht klar.
Zweck: ich möchte das Ergebnis des Parameters 'edit' aus einem URL-String, herausfinden, möglicher string z.B. "index.php?option=aendern&edit=123456&weitere=optionen", der Parameter 'edit' enthält dabei immer eine Timestamp-Zahl.

Ich habe bisher folgendes Probiert:

Code:
function vurlparm($text)
{
         if($ergebnis = preg_match("/edit=/i(0-9)/&/",$text))
         {
                 $text = str_replace($ergebnis,date("Y-m-d H:i:s",intval($ergebnis)),$text);
         }
         return $text;
}

Nur das klappt nicht :(
 
Code:
~edit=([0-9]{8,10})~i

Wobei ein UNIX-Timestamp ja meines Wissens immer 8-10 Ziffern hat, oder?
 
Code:
~edit=([0-9]{8,10})~i

Wobei ein UNIX-Timestamp ja meines Wissens immer 8-10 Ziffern hat, oder?

Nach meiner Zählung besitzt er immer genau 10 Zeichen, der Stamp enthält auch nur das Datum ab 2007, darunter kann und wird keinen Stamp geben, so wie das Skript gestrickt ist. Ich werde deinen Pattern mal gleich testen ...

Nein Klappt nicht es wird zwar was gefunden, aber anscheint nur 0 oder 1 als ergebnis zurück gegeben. Auch "~edit=([0-9]{10})~i" klappt nicht.

Die Routine bewirkt jetzt z.B. folgenden String:
"/index.php?useroption=eintragedit&edit=1970-01-01 01:00:01234907077&seite=0&schritt=1970-01-01 01:00:010"
 
Hallo,

davon ausgehend, dass dein Regulärer Ausdruck jetzt stimmt, muss du bei preg_match noch einen 3ten Parameter mitgeben.

Wenn du also jetzt folgendes schreibst, dann kannst du das verwenden:

PHP:
function vurlparm($text)
{
         preg_match("~edit=([0-9]{8,10})~i", $text, $erg);
         var_dump($erg); // DEBUG
         return $erg[0][1];
}

preg_match an sich gibt immer nur true oder false zurück, ob Treffer oder nicht ;)

Siehe auch hier

Gruß
BK
 
Zuletzt bearbeitet:
Ich habe mich jetzt für den weg über strpos und substr entschieden

Code:
         if($pos = strpos($text,"edit="))
         {
                 $ergebnis = substr($text,$pos+strlen("edit="),10);
                 $text = str_replace($ergebnis,date("Y-m-d H:i:s",intval($ergebnis)),$text);
         }

Funktioniert auch :)
 
Zurück