PHP未定义的偏移量或未定义的索引问题未解决

时间:2010-09-12 23:44:27

标签: php

  

可能重复:
  Why am I getting “Undefined index” from my PHP?

$pattern2 = "/([A-Za-z0-9\.\-\_\!\#\$\%\&\'\*\+\/\=\?\^\`\{\|\}]+)\@([A-Za-z0-9.-_]+)(\.[A-Za-z]{2,5})/";

foreach ($lines as $email) {
    preg_match($pattern2,$email,$goodies);
    $goodies[0]=filter_var($goodies[0], FILTER_SANITIZE_EMAIL);

    if(filter_var($goodies[0], FILTER_VALIDATE_EMAIL)){
        array_push($good,$goodies[0]);
    }
}

我从textarea中的旧平面文件中粘贴了大量数据,试图抓取这些电子邮件。

一切正常,它可以很好地提取电子邮件。模式2是我尝试过的唯一一个足以让我工作的模式。

问题是我在错误日志中得到一个未定义的偏移量。在第一个goodies[0]出现的行。

我将所有goodies[0]更改为goodies['0'],我收到了未定义的索引错误。

我已经尝试了几个小时来解决这个问题,而且我在我的智慧结束。

提前感谢能为我解决此事的任何人!

1 个答案:

答案 0 :(得分:1)

  

我仍然不明白。我应该这样做   一个if preg_match来避免这种情况吗?

是的 - 这样做(或在$ goodies数组上运行isset())将是解决问题的唯一方法。

$pattern2 = "/([A-Za-z0-9\.\-\_\!\#\$\%\&\'\*\+\/\=\?\^\`\{\|\}]+)\@([A-Za-z0-9.-_]+)(\.[A-Za-z]{2,5})/";

foreach ($lines as $email) {
    if( preg_match($pattern2,$email,$goodies) ) {
        $goodies[0]=filter_var($goodies[0], FILTER_SANITIZE_EMAIL);
        if(filter_var($goodies[0], FILTER_VALIDATE_EMAIL)){
            array_push($good,$goodies[0]);
        }
    }
}