PHP の特定の関数 ( などeregi
) が非推奨になっているのはなぜですか? 私は通常eregi
、電子メールの検証に使用します。
私はそれを使用する必要がありますか、それとも代わりに使用できる別の機能はありますか?
PHP の特定の関数 ( などeregi
) が非推奨になっているのはなぜですか? 私は通常eregi
、電子メールの検証に使用します。
私はそれを使用する必要がありますか、それとも代わりに使用できる別の機能はありますか?
ereg
eregi
Unicodeで動作しないため、非推奨になりました。
「なぜeregは非推奨になるのですか?」という質問に答えます。、ラスマス・ラードルフはこう言っています:
本当の答えは、ereg関数にはUnicodeサポートがなく、好むと好まざるとにかかわらず、世界はUnicodeに移行しているということです。
PHP-DEVメーリングリストの説明を参照してください。
前述のように、eregi やその他の非推奨の関数は、PHP の次のバージョンで削除されるため、使用しないでください。
PCRE (Perl Compatible Regex) ベースの代替の preg* 関数を見てください( preg_matchとpreg_match_allは、電子メール検証に必要な関数です)。eregi* 関数は posix ベースの正規表現だったので、PCRE の構文はわずかに異なりますが、大きな変更はありません。
関数が非推奨になるのはなぜですか? ウィキペディアは次のように提案しています。
他の人が述べているように、非推奨の関数を使用するのではなく、代わりにpreg関数を確認する必要があります。
特に電子メールの検証では、WebアプリケーションがPHP 5.2以降を搭載したサーバーで実行される場合は、PHPのフィルター(具体的にはfilter_var)関数を確認する価値があります。フィルタ機能は、URLの検証やIPアドレスの検証などにも使用できます。
非推奨の関数は使用しないでください。これは、現在のバージョンのインタープリターでは正しく機能しますが、将来のバージョンからは完全に削除される可能性があるためです。
したがって、古いプロジェクトでそれらを使用する場合は、そのままにしておくこともできます (ただし、新しい php バージョンに移行するときにプロジェクトが壊れる可能性があります)。
ただし、新しいプロジェクトでは絶対に使用しないでください。
使用法は正しいですが、非推奨です。これは、PHP の将来のリリースで、このメソッドが削除される可能性があることを意味します。これは、セキュリティ、冗長性、またはその他の理由による可能性があります。通常、これらの方法の代わりに使用できる他の方法があります (例: eregi -> preg_match)。
スクリプトに前方互換性を持たせたい場合は、非推奨の関数を使用しないでください。現在は動作しますが、将来は動作しなくなる可能性があります。または、さらに悪いことに、彼らは重大なバグを提示しました。これは簡単に修正することはできませんが、単一の機能を修正することではカバーできない大きな変更を保証します.
あなたの場合、 eregi は PHP 6 から削除され、スクリプトは単に失敗します。代わりにpreg_match()
またはを使用してください。preg_match_all()
preg_match
「i」修飾子と一緒に使用するだけです
echo eregi('[\w\.-_]+@[\w\.-_]+\.([a-z]{2,3})', $email) ? 'correct' : 'wrong';
echo preg_match('#[\w\.-_]+@[\w\.-_]+\.([a-z]{2,3})#i', $email) ? 'correct' : 'wrong';