Я работаю с парсером DOM, который захватывает ссылки с веб-сайта по миниатюре класса. Это возвращает список ссылок. Затем они преобразуются в состояние их изображения и отображаются на странице. Проблема, с которой я сталкиваюсь, есть две разные ссылки, которые возвращаются:
http://i.imgur.com/randomstuffhere И http://imgur.com/randomstuffhere
Мне нужно отфильтровать результаты для ссылок, которые НЕ содержат i.imgur.com. Если ссылка является ссылкой imgur, но не содержит i. прежде чем мне нужно отфильтровать его, чтобы не показывать. У меня это до сих пор, и я не могу понять, где я ошибся... Любые предложения?
<?php
$html = file_get_contents('http://www.reddit.com/r/funny');
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$hyperlinks = $xpath->evaluate('//a[@class="thumbnail "]');
foreach($hyperlinks as $hyperlink) {
if (preg_match("/http://imgur.com/", $hyperlink->getAttribute('href'))){
}
else{
echo "<img style='padding-left:30%' width=\"500\" src=\"" . $hyperlink->getAttribute('href') . "\" alt=\"\" />";
echo "<br />";
}
}
?>
Вам нужно избежать //
в http://
с \/\/
.
Вы, вероятно, должны использовать strpos
.
if(strpos($hyperlink->getAttribute('href'), 'http://i.imgur.com/') !== FALSE){
echo "This is an i.imgur.com link!";
}
@
- популярный выбор), если вы хотите избежать экранирования косой черты.
preg_match
- это полный перебор для этой задачи. Используйте вместо этогоstrpos