5

重複の可能性:
PHP で ereg 式を preg に変換するにはどうすればよいですか?

私の連絡先フォームは他の方法で機能していますが、次のエラーが表示され続けます:

非推奨: 関数 ereg() は、/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;
}

解決策を見つけていただければ幸いです

4

3 に答える 3

41

最後のものは非推奨であるため、preg_match代わりにを使用する必要があります。ereg

それを交換することは大したことではありません:

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

となります:

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

ps手動で変更しないように、古いプロジェクトを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);
}

お役に立てば幸いです。

于 2012-11-27T09:18:52.967 に答える
3

この関数ereg()は非推奨であり、今後は使用しないでください。ドキュメントには、何をすべきか (preg_match代わりに使用するため)が記載されています。

于 2012-11-27T09:17:02.157 に答える
0

あなたが言ったように-大したことではありません、それは魅力のように機能します:

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

君たちありがとう

于 2012-11-27T09:46:07.450 に答える