php5.3x は ereg と eregi をサポートしなくなりました。解決策
私は現在、PHP プログラマーとして Web サイトの開発に携わっていますが、主に PHP のバージョンの問題 (PHP5.3.x) が原因で、以前に廃止された多くの PHP 関数に遭遇しました。 (PHP6) 移行、今後サポートされなくなる関数を非推奨としてマークします。これらの関数をコード内で使用すると、「古い関数が使用されています...」という警告メッセージがページに容赦なく表示されます。設定は PHP6 には存在しなくなり、関連する関数も閉じられます
以下は非推奨の関数の一部です:
call_user_method() (call_user_func() を使用してください)代わりに)
call_user_method_array() (代わりに call_user_func_array() を使用してください)
define_syslog_variables()
dl()
ereg () (代わりに preg_match() を使用してください)
ereg_replace() (代わりに preg_replace() を使用してください) )
eregi () ('i' 修飾子置換で preg_match() を使用します)
'修飾子置換) set_magic_quotes_runtime()およびそのエイリアス関数 magic_quotes_runtime()
[color=olive]session_register() (すべての変数は $_SESSION
を使用して置き換えます) session_unregister() ($_SESSION を使用してすべての変数
を置き換えます) session_is_registered() ($_SESSION を使用してすべての変数
を置き換えます) set_socket_blocking() (代わりに stream_set_blocking()
を使用します) split( ) (代わりに preg_split()
を使用します) >
( mysql_select_db () および mysql_que () >mysql_escape_string() (mysql_real_escape_string()
の代わりに) ロケール名を文字列として渡すことは非推奨です。代わりに LC_*
一連の定数を使用してください。 is_dstmktime() のパラメータは、新しいタイムゾーン処理関数に置き換えられます。
に関係する主な関数の移行は次のとおりです。 関数 define_syslog_variables を削除し、関数への参照を削除します。 define_syslog_variables への参照は、変数 $LOG_ERR、$LOG_USER などを定数 LOG_USER、LOG_USER などに置き換えて、ereg、eregi 関数を置き換え、これらの関数の関数宣言を preg_match
function int ereg ( string $pattern , string $string [, array &$regs ] ) int eregi ( string $pattern , string $string [, array &$regs ] ) intpreg_match ( string $pattern , string $ subject [, array &$matches [, int $flags [, int $offset ]]] ) 3 つのパラメーターの最初のパラメーターは正規表現を表す文字列ですが、preg_match は PCRE (Perl 互換の正規表現構文) を使用します。 🎜>「/pattern/」や「#pattern#」など、正規表現の両端で境界として記号を使用します。、eregi はわずかに小文字の一致であり、最初のパラメータである preg_match に変換されます。PCRE のパラメータは、「/pattern/i」または「#pattern#i」のように、わずかに大文字と小文字を区別して使用します。
2 つのパラメータのうち 3 番目のパラメータによって返される一致するデータ構造は異なります。 ereg の 3 番目のパラメーターは、呼び出しの完了後に、完全に一致する文字列と各部分一致する文字列を含む文字列の配列を返します。 preg_match は、ereg の文字列配列に相当する 2 次元配列を返します。preg_match は、一致する値と一致する位置をそれぞれ格納する配列です。複数の一致を実行する場合、PHP には preg_match_all 関数が用意されており、その 3 番目のパラメーターの戻り値は 3 次元配列です。ereg_replace、eregi_replace 関数は、preg_replace 関数または str_replace 関数に置き換えられます。前述の ereg の preg_match との置き換えと同様に、最初のパラメーターを変換し、シンボルを追加する必要があります。 " /pattern/" または "#pattern#" のように、先頭と末尾に…eregi_replace を preg_replace に置き換え、最初のパラメータの後に正規表現パラメータを追加します。例: "/pattern/i" または "#pattern#i", ...ereg_replace の最初のパラメータが正規表現でない場合は、str_replace を使用して直接置き換えることができます。
spliti 関数は、split の代わりに explode または preg_split 関数を使用して文字列を分割します。 正規表現を使用する必要がない場合は、使用します。 正規表現を使用して文字列を分割するには、代わりに preg_split 関数を使用します。置換プロセスは ereg/ereg_replace と似ていますが、分割正規表現の前後に PCRE 区切り文字を追加するために最初の正規表現パラメータが使用される点が異なります。