Примечание об ошибке PHP: неопределенное смещение - PullRequest
0 голосов
/ 09 декабря 2011

Здравствуйте, я получаю следующую ошибку

Notice:  Undefined offset: 1 in file.php on line 113

строка 113: $ publish_content = $ match2 [1];

Это мой код

    if(!preg_match('/\<content\:encoded\>(?:\<\!\[CDATA\[)?(.*?)(?:\]\]\>)?\<\/content\:encoded\>/si',$item,$matches2)){
        for($i2=0;$i2<count($info_tag_pairs);$i2++){
            if(preg_match('/'.custom_preg_quote($info_tag_pairs[$i2][0]).'(.*?)'.custom_preg_quote($info_tag_pairs[$i2][1]).'/si',$item,$matches2)){
                break;
            }
        }
    }

    $publish_content=$matches2[1];
    $publish_content=strip_tags($publish_content);
    $publish_content=preg_replace('/'.arrayToString($rkws,'|','custom_preg_quote').'/si','',$publish_content);
    $publish_content=trim($publish_content);
    //echo $item;
    if(!preg_match_all('/\<category\>(?:\<\!\[CDATA\[)?(.*?)(?:\]\]\>)?\<\/category\>/si',$item,$matches2)){
        for($i2=0;$i2<count($category_tag_pairs);$i2++){
            if(preg_match_all('/'.custom_preg_quote($category_tag_pairs[$i2][0]).'(.*?)'.custom_preg_quote($category_tag_pairs[$i2][1]).'/si',$item,$matches2)){
                break;
            }
        }
    }

Ответы [ 2 ]

0 голосов
/ 11 декабря 2011

Способ избежать тех уведомлений, которые выдает php, это проверить, установлено ли значение, прежде чем что-либо делать со значением.

<?php

if (isset($matches2[1])) {
    // do what you need with $matches2[1]
    // ...
}

// or

if ( ! isset($matches2[1])) {
    // here you are sure $matches2[1] doesn't exist
    return;
}
0 голосов
/ 09 декабря 2011

Это означает, что ваша переменная массива $matches1 не содержит ключа 1. Поскольку вы обращаетесь к $matches2[1], incase $matches2 не заполнен или имеет значение NULL или имеет только одно значение, $matches2[1] является недопустимым смещением.

Это может произойти, если ваш preg_match соответствует вашему $item.

...