Отфильтровать адрес ссылки из результатов DOM

0

Я работаю с парсером 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 />";
  }
}
?>
  • 0
    preg_match - это полный перебор для этой задачи. Используйте вместо этого strpos
  • 1
    «Если ссылка является ссылкой imgur, но не содержит i, прежде чем мне нужно отфильтровать ее, чтобы она не отображалась» - вам нужно отфильтровать ссылки «imgur.com» без i или вам не нужно это делать?
Показать ещё 1 комментарий
Теги:
dom

1 ответ

2
Лучший ответ

Вам нужно избежать // в http:// с \/\/.

Вы, вероятно, должны использовать strpos.

if(strpos($hyperlink->getAttribute('href'), 'http://i.imgur.com/') !== FALSE){
  echo "This is an i.imgur.com link!";
}
  • 0
    Это работает! Спасибо вам большое! Извините за комментарий, прежде чем об этом не работает. Я не проверял редактирование ... Глупый меня!
  • 1
    Обратите внимание, что вы можете использовать другой разделитель регулярных выражений ( @ - популярный выбор), если вы хотите избежать экранирования косой черты.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню