Как бороться с несоответствующим результатом выражения XPath в PHP - PullRequest
3 голосов
/ 04 февраля 2011

Я написал следующую строку для анализа изображений из профилей Twitter, и она работает большую часть времени, за исключением того, что эта строка убивает содержащий скрипт, когда страница не содержит совпадений.с анализом регулярных выражений, но думал, что попробую что-то новое и изучу процесс xpath, но я не уверен, что мне не хватает?Я попытался попробовать / поймать логику, и это не помогло.Как я могу запретить этому запросу xpath остановить скрипт и просто вернуть '', если совпадений не найдено?

$img = '';
$img = @$xpath->query("//*[@class='profile-img' or @id='profile-image']" )->item( 0 )->getAttribute( 'src' );

Спасибо

1 Ответ

1 голос
/ 04 февраля 2011

Если бы вы не подавили ошибку с помощью @, это было бы сразу ясно.Если query не вернет никаких результатов, вызов item(0) вернет NULL.Вызов getAttribute на NULL, очевидно, плохо провалится.

Вы должны проверить длину:

$img = $xpath->query("//*[@class='profile-img' or @id='profile-image']")->item(0);
$img = $img ? $img->getAttribute('src') : '';

При этом используется троичное выражение: если $img не равно нулю, оно будетвернуть атрибут src.В противном случае он вернет пустую строку.

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