PHP функция для очистки первого изображения - PullRequest
1 голос
/ 03 апреля 2012

В блоге Wordpress я использую следующую функцию, чтобы очистить страницу (просмотр одного сообщения) и найти первое изображение и, если ничего не найдено, использовать изображение по умолчанию:

    function catch_that_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
  $first_img = $matches [1] [0];

  if(empty($first_img)){ //Defines a default image
    $first_img = "http://custome_url_for_default_image.png";
  }
  return $first_img;
}

Я попытался вставить его как есть в теме Tumblr, но столкнулся с некоторыми проблемами (он не загружается как функция PHP).Конечно, я что-то упустил.Если у кого-то есть идеи по устранению неполадок, я буду рад попробовать.

Спасибо,

P.

1 Ответ

5 голосов
/ 03 апреля 2012

Лучший способ сделать это - избегать использования регулярных выражений для анализа HTML .

Попробуйте использовать DOMDocument:

function catch_that_image() {
    global $post;
    $dom = new DOMDocument();
    $dom->loadHtml($post->post_content);
    $imgTags = $dom->getElementsByTagName('img');
    if ($imgTags->length > 0) {
        $imgElement = $imgTags->item(0);
        return $imgElement->getAttribute('src');
    } else {
        return 'http://custome_url_for_default_image.png';
    }
}
...