PHP中未定义的偏移量

时间:2011-11-09 09:40:06

标签: php preg-match

当我尝试使用代码时:

function getusername($input){
    //parse the result
    preg_match("/<username>(.*)?<\/username>/", $input, $username);
    return $username[1]; // Line 4
}  

它给了我这个错误:

  

第4行未定义的偏移量。

3 个答案:

答案 0 :(得分:3)

  

我在做什么大错?

好吧,似乎$username[1]不存在。如果正则表达式不匹配,则可能会发生这种情况。我会改为:

function getusername($input){
    preg_match("/<username>(.*)?<\/username>/", $input, $username);
    if( count( $username ) > 0 ) {
        return $username[1];
    }
    return false;
}

答案 1 :(得分:0)

这意味着您正在尝试访问数组中不存在的键。因此,您的$username变量似乎没有密钥1.请记住,在编程中,您通常从0开始计数,因此第一个值为$username[0]

您可以通过调用var_dump来显示您的用户名变量,如下所示:

var_dump($username);

答案 2 :(得分:-1)

有各种可能性。

1。)您尝试访问的站点不允许机器人或具有一些安全功能,可以阻止机器人访问该站点。要检查站点是否重​​定向,请打印/回显存储所有内容的变量。

2。)文本表达式没有以正确的格式写入,逻辑上不正确,它产生的结果为空集。