1. ホーム
  2. php

[解決済み] 非推奨。関数 ereg() は非推奨 [重複] です。

2022-02-17 07:48:08

質問

<ブロッククオート

重複の可能性があります。
PHPでereg式をpregに変換するにはどうしたらいいですか?

コンタクトフォームは正常に動作しているのですが、以下のような問題が発生します。 というエラーが発生します。

非推奨。関数 ereg() は非推奨です in/home/....

私はここで本当に迷っているのですが、ここが調整が必要な部分だと考えています。

    if ( empty($_REQUEST['name']) ) {
    $pass = 1;
    $alert .= $emptyname;
} elseif ( ereg( "[][{}()*+?.\\^$|]", $_REQUEST['name'] ) ) {    
    $pass = 1;
    $alert .= $alertname;
}
if ( empty($_REQUEST['email']) ) {
    $pass = 1;
    $alert .= $emptyemail;
} elseif ( !eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]   {2,3})$", $_REQUEST['email']) ) {
    $pass = 1;
    $alert .= $alertemail;
}
if ( empty($_REQUEST['message']) ) {
    $pass = 1;
    $alert .= $emptymessage;
} elseif ( preg_match( "[][{}()*+?\\^$|]", $_REQUEST['message'] ) ) {
    $pass = 1;
    $alert .= $alertmessage;
}

解決策を見つけることができれば、非常にありがたい

解決方法は?

を使用する必要があります。 preg_match の代わりに ereg なぜなら、最後のものは非推奨だからです。

置き換えることは大したことではありません。

ereg( "[][{}()*+?.\\^$|]", $_REQUEST['name'] )

になります。

preg_match( "/[][{}()*+?.\\^$|]/", $_REQUEST['name'] )

p.s. 私は古いプロジェクトをPHP 5.3に移植する際に100以上のファイルを修正しなければなりませんでした。

function replaceEregWithPregMatch($path) {
    $content = file_get_contents($path);
    $content = preg_replace('/ereg\(("|\')(.+)(\"|\'),/',
                            "preg_match('/$2/',",
                            $content);
    file_put_contents($path, $content);
}

お役に立てれば幸いです。