Неопределенное смещение в PHP - PullRequest
0 голосов
/ 09 ноября 2011

Когда я попробовал следующий код:

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

Это дало мне эту ошибку:

Неопределенное смещение в строке 4.

Ответы [ 3 ]

3 голосов
/ 09 ноября 2011

Что за грубую ошибку я делаю?

Ну, похоже $username[1] не существует. Это может произойти, если регулярное выражение не совпадает. Я бы изменил это на:

function getusername($input){
    preg_match("/<username>(.*)?<\/username>/", $input, $username);
    if( count( $username ) > 0 ) {
        return $username[1];
    }
    return false;
}
0 голосов
/ 01 октября 2015

Существуют различные возможности.

1.) Сайт, к которому вы пытаетесь получить доступ, не допускает ботов или имеет некоторые функции безопасности, которые могут помешать боту получить доступ к сайту. Чтобы проверить, перенаправляет ли сайт сайт или нет, напечатайте / отобразите переменную, в которой хранятся все материалы.

2.) Текстовое выражение записано не в правильном формате, Логически неверно, когда оно приводит к результату в виде пустого набора.

0 голосов
/ 09 ноября 2011

Это означает, что вы пытаетесь получить доступ к ключу в массиве, который не существует. Таким образом, похоже, что ваша переменная $username не имеет ключа 1. Помните, что при программировании вы обычно начинаете считать с 0, поэтому первое значение будет $username[0].

Вы можете визуализировать свою переменную имени пользователя, вызвав var_dump, например:

var_dump($username);

...