如果服务器缺少图像,请将图像添加到 foreach?
Add image to foreach if missing from server?
我有以下代码,我想要的是,如果该图像不在服务器文件中,则显示替代图像...
foreach ($result as $data) {
echo'
<tr style="background-color:#690b06;">
<td id"key" style="font-size:18px; color:#f0cb01;">'.$data["Product #"].'</td>
<td id"bl" style="font-size:18px;color:#f0cb01;"><a target="_blank" href="https://www.google.com/search?q='.$data["Name"].'">'.$data["Name"].'</td>
<td id"bl" style="font-size:18px;color:#f0cb01;">
<img src="http://example.com/search/images/'.$data["Name"].'.jpg" width="75" height="100" class="image">
</td>
<td id"ph" style="font-size:18px;color:#f0cb01;">'.$data["UPC"].'</td>
<td id"ph" style="font-size:18px;color:#f0cb01;">'.$data["Case Pack"].'</td>
<td id"ph" style="font-size:18px;color:#f0cb01;">'.$data["Item Ounces"].'</td>
<td id"reason" style="font-size:18px;color:#f0cb01;">'.$data["Suggested Retail"].'</td>';
}
echo "</tr></table>";
我的文件结构如下
/seach/images/"name of item.jpg"
物品的名称是从数据库中提取的,照片也是带有.jpg扩展名的名称。有些项目没有图像。它是我工作的搜索功能,我在其中搜索一个项目,结果 returns...如果可能的话,有些带有图片。但有些没有图像,只显示空占位符。
if(file_exists('/search/images/'.$data["Name"].'.jpg')) {
echo '<img src="http://example.com/search/images/'.$data["Name"].'.jpg" width="75" height="100" class="image">'
} else {
//echo out alt image
}
正如其他人指出的那样,您可以使用 PHP 函数 file_exists。但请注意,如果您谈论的是存储在其他服务器上的图像,即使文件不存在,file_exists
有时也会 return 得到肯定的结果。
一种解决方案是使用 getimagesize,例如:
$img_arr = @getimagesize($filename);
您将需要 @
,因为如果文件不存在,getimagesize
将 return 出错。然后,您将测试 $img_arr
是否实际上是一个数组:
if (is_array($img_arr)) { ... }
getimagesize
将使用存储在远程服务器上的文件。
如果您的应用程序可以将 URL 映射到文件位置,事情就会变得更容易:
<?php
$url_root = 'http://example.com/search/images';
$doc_root = $_SERVER['DOCUMENT_ROOT'].'/search/images';
$default_image = 'http://example.com/images/default.jpg';
foreach ($result as $data) {
$image_url = $default_image;
if (file_exists( $doc_root.'/'.$data['Name'].'.jpg' )) {
$image_url = $url_root.'/'.$data['Name'].'.jpg';
}
// output the image tag
echo '<img src="'.$image_url.'" width="75" height="100" class="image" />';
}
?>
我有以下代码,我想要的是,如果该图像不在服务器文件中,则显示替代图像...
foreach ($result as $data) {
echo'
<tr style="background-color:#690b06;">
<td id"key" style="font-size:18px; color:#f0cb01;">'.$data["Product #"].'</td>
<td id"bl" style="font-size:18px;color:#f0cb01;"><a target="_blank" href="https://www.google.com/search?q='.$data["Name"].'">'.$data["Name"].'</td>
<td id"bl" style="font-size:18px;color:#f0cb01;">
<img src="http://example.com/search/images/'.$data["Name"].'.jpg" width="75" height="100" class="image">
</td>
<td id"ph" style="font-size:18px;color:#f0cb01;">'.$data["UPC"].'</td>
<td id"ph" style="font-size:18px;color:#f0cb01;">'.$data["Case Pack"].'</td>
<td id"ph" style="font-size:18px;color:#f0cb01;">'.$data["Item Ounces"].'</td>
<td id"reason" style="font-size:18px;color:#f0cb01;">'.$data["Suggested Retail"].'</td>';
}
echo "</tr></table>";
我的文件结构如下 /seach/images/"name of item.jpg"
物品的名称是从数据库中提取的,照片也是带有.jpg扩展名的名称。有些项目没有图像。它是我工作的搜索功能,我在其中搜索一个项目,结果 returns...如果可能的话,有些带有图片。但有些没有图像,只显示空占位符。
if(file_exists('/search/images/'.$data["Name"].'.jpg')) {
echo '<img src="http://example.com/search/images/'.$data["Name"].'.jpg" width="75" height="100" class="image">'
} else {
//echo out alt image
}
正如其他人指出的那样,您可以使用 PHP 函数 file_exists。但请注意,如果您谈论的是存储在其他服务器上的图像,即使文件不存在,file_exists
有时也会 return 得到肯定的结果。
一种解决方案是使用 getimagesize,例如:
$img_arr = @getimagesize($filename);
您将需要 @
,因为如果文件不存在,getimagesize
将 return 出错。然后,您将测试 $img_arr
是否实际上是一个数组:
if (is_array($img_arr)) { ... }
getimagesize
将使用存储在远程服务器上的文件。
如果您的应用程序可以将 URL 映射到文件位置,事情就会变得更容易:
<?php
$url_root = 'http://example.com/search/images';
$doc_root = $_SERVER['DOCUMENT_ROOT'].'/search/images';
$default_image = 'http://example.com/images/default.jpg';
foreach ($result as $data) {
$image_url = $default_image;
if (file_exists( $doc_root.'/'.$data['Name'].'.jpg' )) {
$image_url = $url_root.'/'.$data['Name'].'.jpg';
}
// output the image tag
echo '<img src="'.$image_url.'" width="75" height="100" class="image" />';
}
?>