PHP函数刮掉第一张图片

时间:2012-04-03 18:11:09

标签: php image wordpress tumblr

在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 个答案:

答案 0 :(得分:5)

执行此操作的最佳方法是avoid using regexes to parse 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';
    }
}