【问题标题】:Deprecated: Function eregi() is deprecated [closed]已弃用:函数 eregi() 已弃用 [关闭]
【发布时间】:2013-12-28 21:47:44
【问题描述】:

这是我在我的网站上试用联系表格时得到的:已弃用:函数 eregi() 在第 9 行的 /home/content/04/11965204/html/horizo​​n/One/contact.php 中已弃用 消息已发送!

这是我的代码:请帮助 - 谢谢

<?php

if(!$_POST) exit;

$email = $_POST['email'];

//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST

['email']) ? '' : 'INVALID EMAIL ADDRESS';

if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]
{2,}"."$",$email )){
    $error.="Invalid email address entered";
    $errors=1;
}

if($errors==1) echo $error;
else{
    $values = array ('name','email','message');
    $required = array('name','email','message');
    $your_email = "horizon.electronics.recyclers@gmail.com";
    $email_subject = "New Message: ".$_POST['subject'];
    $email_content = "new message:\n";

    foreach($values as $key => $value){
        if(in_array($value,$required)){
            if ($key != 'subject' && $key != 'company') {
                if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }
            }
            $email_content .= $value.': '.$_POST[$value]."\n";
        }
    }

    if(@mail($your_email,$email_subject,$email_content)) {
        echo 'Message sent!'; 
    } else {
        echo 'ERROR!';
    }
}

?>

【问题讨论】:

  • 请改用preg_match()。由于某种原因,您的代码中已将其注释掉。
  • 我喜欢 PHP 手册中所说的 eregi() 已弃用 但没有说明替代品是什么
  • php.net/manual/en/function.eregi.php => "从 PHP 5.3.0 开始不推荐使用提示 eregi()。建议使用带有 i (PCRE_CASELESS) 修饰符的preg_match()。" @Bojangles
  • 它在那儿,但在首屏下方半个屏幕,这是一个提示。甚至没有警告。为什么大红框没有说明错误是什么?典型的 PHP

标签: php


【解决方案1】:

在 PHP 5.3+ 中,eregeregi 函数已弃用。替换

eregi('pattern', $string, $matches) 

使用

preg_match('/pattern/i', $string, $matches)

(第一个参数中的尾随i 表示忽略大小写,对应于eregi 中的i - 如果替换ereg 调用,请跳过)。

但请注意新旧模式之间的差异! This page 列出了主要区别,但是对于更复杂的正则表达式,您必须更详细地查看POSIX regex(由旧的 ereg/eregi/split 函数等支持)和 PCRE 之间的区别。

但是,在您的情况下,无需担心,只需按照上面的草图进行替换即可。

【讨论】:

  • @user3142811 如果这回答了您的问题,只需勾选帖子左侧的标记即可将其标记为已接受的答案。
【解决方案2】:

弃用是应用于计算机软件功能的状态, 特征或实践表明应避免,通常 因为它被取代了。

eregi() 自 PHP 5.3 起已弃用,请改用 preg_match()

【讨论】:

  • 非常感谢。我把它换成了
  • 现在它可以工作了。谢谢
  • 这很好!)希望现在你会知道将来如何避免这种情况。
【解决方案3】:

您最好使用FILTER_VALIDATE_EMAIL,而不是使用已弃用的eregi() 函数或preg_match() 来验证电子邮件地址,它使用了很多LESS 代码

示例和替代方法:

$email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "Thank you. Your email is valid.";
  // The email address is valid
} else {

echo "INVALID EMAIL ADDRESS";
  // The email address is not valid
}

或者使用倒置的方法:!filter_var

if(!filter_var($email, FILTER_VALIDATE_EMAIL))
  {
  echo "INVALID EMAIL ADDRESS";
  }
else
  {
  echo "Your email is valid.";
  }

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 1970-01-01
    • 2021-11-20
    • 2012-03-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    相关资源
    最近更新 更多