2009-11-16 16 views
0

Почему определенные функции в PHP (например, eregi) устарели? Обычно я использую eregi для проверки подлинности электронной почты.использование устаревших функций

Должен ли я использовать его или есть другая функция, которую можно использовать на своем месте?

+0

спасибо за все, что он отвечает, но я предполагаю, что первая часть все еще остается без ответа ... если все работает хорошо с определенной functin .. почему парень чувствую необходимость отказаться от этого ... Или другие проблемы могут быть прослушивание ребята, которые заставляют их делать это. – Sachindra

+0

@ sachindra149, см. мой ответ. –

+0

спасибо за ответ, ребята ... – Sachindra

ответ

5

Как уже отмечалось, вы не должны использовать eregi или любые другие устаревшие функции, поскольку они были удалены в следующей версии PHP.

Посмотрите на the preg* functions для альтернативы на основе PCRE (Perl Compatible Regex) (preg_match и preg_match_all - это функции, необходимые для проверки подлинности электронной почты). Функции eregi * были регулярным выражением posix, поэтому PCRE имеет несколько иной синтаксис, но это не является серьезным изменением.

Почему функция устаревает? Wikipedia предлагает:

  • Функция заменена более мощной альтернативной функцией.
  • Эта функция считается посторонней и будет удалена в будущем, чтобы упростить систему в целом.
  • В будущей версии программного обеспечения планируется внести существенные структурные изменения, которые делают невозможным (или нецелесообразным) поддержку устаревших функций.
  • Стандартизация или повышенная согласованность в наименовании
  • Эта функция содержит дефект дизайна - часто это недостаток безопасности, и поэтому его следует избегать, но существующий код зависит от него.
0

Устаревшая функция не должна использоваться; потому что, хотя они корректно работают в текущей версии интерпретатора, они могут (и будут) полностью удалены из будущей версии.

Так что если вы используете их в старых проектах, вы можете также оставить их (но ваш проект, вероятно, сломается при переходе на новую версию php).

Но абсолютно не используйте их в новых проектах.

0

Это использование верно, но устарело. Это означает, что в будущей версии PHP этот метод может быть удален. Это может быть связано с безопасностью, избыточностью или другими причинами. Обычно существуют другие методы, которые вы можете использовать вместо этих методов (например, eregi -> preg_match)

0

Вы не должны использовать устаревшие функции, если вы хотите, чтобы ваш скрипт был совместим с переходом. Они работают сейчас, но могут не работать в будущем. Или, что еще хуже, они представили критическую ошибку, которая не может быть зафиксирована тривиально, но требует большего изменения, которое не может быть покрыто за счет фиксации одной функции.

В вашем случае eregi удаляется с PHP 6, и ваш скрипт просто терпит неудачу. Вместо этого используйте preg_match() или preg_match_all().

5

ereg и eregi были устаревшими, потому что они не работают с Unicode.

В ответ на вопрос "Why is ereg being deprecated?", Rasmus Lerdorf было это, чтобы сказать:

Реального ответ, что нет поддержки Unicode в функциях Ерегли, и как это или нет, мир катится Unicode.

См. the discussion в списке рассылки PHP-DEV.

0

Как уже упоминалось, вы не должны использовать устаревшие функции и вместо этого смотреть на функции preg.

В частности, для проверки подлинности электронной почты, возможно, стоит посмотреть на PHP filter (в частности, filter_var), если ваше веб-приложение будет работать на сервере с PHP 5.2 и выше. Функции фильтра также могут использоваться для проверки правильности URL и проверки IP-адресов между прочим.

0

Просто используйте preg_match с «я» модификатор

echo eregi('[\w\.-_][email protected][\w\.-_]+\.([a-z]{2,3})', $email) ? 'correct' : 'wrong'; 
echo preg_match('#[\w\.-_][email protected][\w\.-_]+\.([a-z]{2,3})#i', $email) ? 'correct' : 'wrong';
Смежные вопросы