php Примечание: неопределенное смещение: 0, когда это не должно происходить - PullRequest
0 голосов
/ 25 ноября 2011

Однако он распечатывает это для меня. Таким образом, он возвращается правильно, но помещает ошибку в preg_match('%">(.+?)</p>%s', $resultsDescription[$i][0], $resultsDescriptionFinal[$i]);. Что здесь может быть не так?

$resultsCount = sizeof($results[0]);
    if($resultsCount > 5)
    {
        $resultsCount = 5;
    }
    $resultsCountForLoop = ($resultsCount - 1);


    for ( $i = 0; $i <= $resultsCountForLoop; $i++ ) {
        preg_match('%title="(.+?)\"%s', $results[0][$i], $resultsTitle[$i]);
        preg_match('%href="(.+?)"%s', $results[0][$i], $resultsLink[$i]);
        preg_match('%<img src="(.+?)"%s', $results[0][$i], $resultsImage[$i]);
        $getImageAndDescription[$i] = file_get_contents($rootURLToGetContents.$resultsLink[$i][1]);
        preg_match('%id="plot(.+?)<\/p>%s', $getimageAndDescription[$i], $resultsDescription[$i]);
        if (isset($resultsDescription[$i])){
        preg_match('%">(.+?)<\/p>%s', $resultsDescription[$i][0], $resultsDescriptionFinal[$i]);
        }

    //print_r($resultsLink[$i]);
    //echo $i;
    }

    print_r($resultsLink[0]);
    print_r($resultsImage[0]);
    print_r($resultsTitle[0]);
    print_r($resultsDescriptionFinal[0];




    and the error that I get is <font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined offset: 0 in C:\wamp\www\library\s\results.php on line <i>27</i></th></tr>
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0063</td><td bgcolor='#eeeeec' align='right'>690024</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\library\s\results.php' bgcolor='#eeeeec'>..\results.php<b>:</b>0</td></tr>
    </table></font>

1 Ответ

1 голос
/ 25 ноября 2011
    preg_match('%">(.+?)<\/p>%s', $resultsDescription[$i][0], $resultsDescriptionFinal[$i]);

Уведомление приходит либо от пропущенного $resultsDescription[$i][0], либо от пустого $resultsDescriptionFinal[$i], очевидно.

Переформатируйте ваш код следующим образом, чтобы получить окончательный указатель:

    preg_match(
         '%">(.+?)<\/p>%s',
         $resultsDescription[$i][0],
         $resultsDescriptionFinal[$i]
    );

А затем либо инициализируйте отсутствующие переменные, либо заранее их исследуйте, либо начните использовать менее сложное размещение массивов. Для второго параметра в preg_match очень обычно указывается простая общая переменная $matches.
Тогда вы все равно можете присвоить его результаты (если они есть) вашему вложенному массиву , затем :

    preg_match('%">(.+?)<\/p>%s', $match, $src);
    $resultsDescription[$i][0] = $match;

Точно так же вы можете использовать isset($resultsDescriptionFinal[$i]) перед этим, чтобы проверить, действительно ли текст $src доступен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...