在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上。
答案 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';
}
}