Почему `ereg` устарел в PHP? - PullRequest
3 голосов
/ 20 июня 2010

Почему ereg устарело в PHP?

У меня было много функций, которые использовали это, теперь они всегда выдают предупреждение.

Какая альтернатива этому тоже?

Ответы [ 4 ]

2 голосов
/ 20 июня 2010

Ereg устарела, поскольку была заменена расширением PCRE.Ответ (ы) о том, что он был заменен и объявлен устаревшим, дан в приведенной ниже ссылке, но чтобы сэкономить вам время, вот копия и вставленный ответ:

Примечание: preg_match (), использующее Perl- совместимый синтаксис регулярных выражений, часто является более быстрой альтернативой ereg () .

PHP ereg против preg

Одно отличиемежду ними есть то, что ereg ищет самый длинный совпадающий результат, в то время как preg ищет первый результат.Вот список различий между ними, которые помогут вам определить, как лучше всего обновить ваш код: http://www.php.net/manual/en/reference.pcre.pattern.posix.php

Следует отметить, что PHP 6.0 полностью УДАЛЕН, так что если вы в конечном итогеПри переносе кода на новый сервер, который может использовать PHP 6.0, функция ereg больше не будет доступна.

2 голосов
/ 20 июня 2010

http://pl.php.net/manual/en/function.ereg.php

Примечание. Начиная с PHP 5.3.0 расширение регулярного выражения устарело в пользу расширения PCRE.Вызов этой функции выдаст уведомление E_DEPRECATED.См. Список различий для получения справки по преобразованию в PCRE.

1 голос
/ 20 июня 2010

На странице документации указано :

Примечание: Начиная с PHP 5.3.0 расширение regex устарело в пользу расширение PCRE .Вызов этой функции выдаст уведомление E_DEPRECATED.См. список различий для получения справки по преобразованию в PCRE.

0 голосов
/ 16 ноября 2017

Одна из возможных причин - проблемы производительности, на которые уже отвечали другие.

Я хотел бы добавить еще одну (пока) возможную причину:

Предположим, вы написали такой код (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.

...