5

Possible Duplicate:
How can I convert ereg expressions to preg in PHP?

My contact form is othervise working but I keep getting the following error:

Deprecated: Function ereg() is deprecated in/home/.....

I'm really lost here but I figure this is the part that needs some adjusting.

    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;
}

Finding a solution would be highly appreciated

Community
  • 1
  • 1
no0ne
  • 2,659
  • 8
  • 28
  • 44
  • You're not the owner of http://computertrouble.com/ by any chance are you? Just curious. –  Feb 25 '18 at 01:16

3 Answers3

42

You must use preg_match instead of ereg because the last one is deprecated.

Replacing it is not a big deal:

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

will become:

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

p.s. I had to modify more than one hundred files while I was porting my old project to PHP 5.3 to avoid manually modifying I've used following script to do it for me:

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

I hope it helps.

Leri
  • 12,367
  • 7
  • 43
  • 60
  • 2
    Note that there are [delimeters](http://php.net/manual/en/regexp.reference.delimiters.php) in `preg_match`. – Gellie Ann Dec 08 '17 at 01:49
3

The function ereg() is deprecated and should not be used any more. The documentation tells you what to do (to use preg_match instead).

Kai
  • 38,985
  • 14
  • 88
  • 103
0

Like you said - no bigie, it works like a charm:

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;
}

Thank you guys

no0ne
  • 2,659
  • 8
  • 28
  • 44