PHP ereg problem

nick25

Well-known member
ID: 205997
L
30 Mai 2009
515
23
hallo,

ereg() wird ab php 5.3 b.z.w 5.4 zu preg_match()
es kommt immer der fehler "Deprecated: Function ereg() is deprecated in C:\xampp\htdocs\xxxxxx\yyyy6.php on line 13"

könnte mir jemand helfen diesen schnipsel zu ändern?

PHP:
<?php
$datei = 'test.jpg';
$exif = exif_read_data($datei, 0, true);
$a = "";
foreach ($exif as $key => $section) 
{
   foreach ($section as $attr => $val) 
{
   $Super .= "<$attr>$val</$attr>";
}
}

$b = ereg('<FileDateTime>(.*)</FileDateTime>', $a, $regs) ? $regs[1] : "fehler";
echo date("d.m.Y H:i",$b);
?>
 
Probier mal:
PHP:
preg_match('~<FileDateTime>(.*)</FileDateTime>~', $a, $regs)
 
es funktioniert. vielen dank

wieso kommen jetzt "~" hin? woher wußtest du das?


manche sachen sind merkwürdig
 
Das sind ganz normale (zu grossen Teilen frei wählbare) RegExp-Delimiter, die bei richtigen regulären Ausdrücken nunmal vor und hinter den Ausdruck gehören (das steht übrigens auch als zweiter Satz in der Doku ;)). Du wirst viel öfter RegExp finden, die in / eingefasst sind, welches ich hier aber nicht genutzt habe, da der / als solcher auch in dem Pattern vorkommt und somit escapet werden müsste.

Diese ganze ereg_*()-Geschichte sollte man ganz schnell vergessen und immer die preg_*()-Funktionen verwenden. Sonst läuft man überall sonst, wo RegExp verwendet werden, immer wieder in Probleme.

BTW: Wer mal seine RegExp-Skills auf die Probe stellen möchte: https://regexcrossword.com/ :)
 
Zuletzt bearbeitet:
Menno!
Ich hatte schon ewig gebraucht,um das mit ereg hin zu bekommen,und jetzt das...

Vielleicht kann jemand von euch mal schnell drüber schauen,ob das so in Ordnung ist.Was die Rauten # bedeuten hab ich zwar nicht verstanden,aber es scheint zu funktionieren:

PHP:
if (preg_match("#^[1-9]{1,1}[0-9]{0,2}$#", $_GET['menue']))
    {
    
    }

Zugelassen sollen nur die Zahlen von 1-999
 
Hallo,
wird das eigentlich nicht so gemacht ?
PHP:
 if (preg_match("/#^[1-9]{1,1}[0-9]{0,2}$#/", $_GET['menue']))
    {
    
    }
Nutz das zwar nicht mehr aber mir war so.

mfg jens

Menno!
Ich hatte schon ewig gebraucht,um das mit ereg hin zu bekommen,und jetzt das...

Vielleicht kann jemand von euch mal schnell drüber schauen,ob das so in Ordnung ist.Was die Rauten # bedeuten hab ich zwar nicht verstanden,aber es scheint zu funktionieren:

PHP:
if (preg_match("#^[1-9]{1,1}[0-9]{0,2}$#", $_GET['menue']))
    {
    
    }

Zugelassen sollen nur die Zahlen von 1-999
 
Nein, das wäre dann syntaktisch falsch, da somit auch die # Teil des gesuchten Strings sind. Die Wahl der Delimiter ist jedem selbst überlassen - gängig sind da halt /, # oder auch ~.

Das steht hier aber auch schon im Thread mit den passenden Links zur Doku. ;)