Одна из возможных причин - проблемы производительности, на которые уже отвечали другие.
Я хотел бы добавить еще одну (пока) возможную причину:
Предположим, вы написали такой код (PHP 5.3):
<?php
$arg=$_GET['key'];
if (ereg('^[A-Za-z0-9]+$', $arg) === FALSE){
die('Invalid key');
}
# Do some other things with $arg
?>
Можно обойти это, указав этот URL:
foo.php?key=A%00text
^~~~
с частью text
, являющейся произвольно чем угодно , которое он хочет, что оставляет огромный недостаток в безопасности кода preg_match()
однако, не имеет этой проблемы. Поэтому вам лучше перенести весь код на preg
, так как ereg
больше не доступен вообще в PHP 6.0.