0

可能重复:
如何在 PHP 中将 ereg 表达式转换为 preg?

我有一个我在几个不同网站上使用过的 php 联系表。我正在尝试在新站点上实现相同的站点,但收到以下消息:

已弃用:函数 eregi() 在第 36 行的 /home/content/58/10223058/html/contact-1.php 中已弃用

这是我的代码中的第 36 行:

if(!eregi($string_exp,$name)) {
    $error_message .= 'The Name you entered does not appear to be valid.<br />';
  }

我确信有一个简单的解决方法,但我对 PHP 很陌生,不知道如何解决这个问题!

任何帮助将不胜感激。谢谢

4

2 回答 2

4

1)这只是一个警告。我猜代码仍然有效,尽管有警告。正确的?

2)您可以通过谷歌搜索“不推荐使用eregi()函数”来修复它。例如:

http://takien.com/513/how-to-fix-function-eregi-is-deprecated-in-php-5-3-0.php

// Old
if(!eregi("^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$", $str)) {
    $msg = 'email is not valid';
}
else {
    $valid = true;
}

// New
if(!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $str)) {
    $msg = 'email is not valid';
}
else {
    $valid = true;
}

完整的 PHP 在线文档在这里:

preg_match() 的“手册页”在这里:

于 2013-01-02T18:12:33.597 回答
3

在大多数情况下,您可以更换

if(!eregi($string_exp,$name)) {

if(!preg_match('/'.$string_exp.'/i',$name)) {

但并非总是如此 - 您必须检查模式 ( $string_exp)。

但是,您可以通过在eregi()调用之前将其放在某处来禁用该消息:

error_reporting(error_reporting() & ~E_DEPRECATED);
于 2013-01-02T18:14:02.483 回答