我正在使用最新的timthumb脚本生成我的帖子缩略图,并将其与摘录一起包含在内。虽然我只想在缩略图文件实际存在时加载缩略图,否则我甚至不想加载图像占位符。
我将在多用户网络上使用它,该网络仍处于开发的早期阶段。我想测试帖子作者是否忽略了正确添加“thumb”自定义字段,如果有,通常会返回404 not found错误。
因此,我将以下代码放入循环中,首先确定帖子是否有任何图像,然后使用帖子中列出的第一个图像的文件路径检查文件是否存在。
<?php
$content = $post->post_content;
$searchimages = \'~<img [^>]* />~\';
preg_match_all($searchimages, $content, $pics);
$iNumberOfPics = count($pics[0]);
if($iNumberOfPics > 0){
$blogTemplate = get_bloginfo(\'template_directory\');
$imgSrc = get_post_meta($post->ID, "thumb", $single = true);
$imgSrc = $blogTemplate . "/scripts/timthumb.php?src=" . $imgSrc . "&w=300&zc=1";
if(file_exists($imgSrc)){ ?>
<a href="<?php the_permalink(); ?>" class="thumb" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><img src="<?php echo $imgSrc; ?>" alt="<?php the_title(); ?>" /></a><?php
}
}
?>
我已经测试了输出的$imgSrc字符串,该字符串是有效的,它是一个现有文件,尽管my file\\u exists($imgSrc)函数总是返回false。我想知道timthumb脚本是否与file\\u exists()函数兼容?
SO网友:Kevin Langley Jr.
file\\u exists()函数是内置的php函数,应该可以在任何地方使用。但你这样做是错误的。不能在php文件中使用查询字符串来检查文件是否存在。仅仅因为它是一个有效链接,并不意味着文件\\u存在()。服务器上没有名为/scripts/timthumb的文件。php?src公司=*
您需要对代码执行以下操作:
<?php
$content = $post->post_content;
$searchimages = \'~<img [^>]* />~\';
preg_match_all($searchimages, $content, $pics);
$iNumberOfPics = count($pics[0]);
if($iNumberOfPics > 0){
$blogTemplate = get_bloginfo(\'template_directory\');
$imgSrc = get_post_meta($post->ID, "thumb", $single = true);
if(file_exists($imgSrc)){
$imgSrc = $blogTemplate . "/scripts/timthumb.php?src=" . $imgSrc . "&w=300&zc=1";
?>
<a href="<?php the_permalink(); ?>" class="thumb" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><img src="<?php echo $imgSrc; ?>" alt="<?php the_title(); ?>" /></a><?php
}
}
?>
这样,您实际上是在检查真实的文件名,然后在知道文件存在后,将url更改为查询字符串url。