我正在尝试使用php回显图像,我的图像存储在数组中,所以我不能跳过空值,我的PHP代码是
$images = 'imgs/001.jpg,imgs/001.gif,imgs/002.png,imgs/003.jpg,imgs/004.jpg,
imgs/005.jpg,imgs/006.png,imgs/007.png,';
$expl = explode (',', $images);
foreach ($expl as $path){
if (!empty($path) || getimagesize($path)!== false){
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
echo '<img src="'.$base64.'" width="300" height="300">' . '<br>';
var_dump (getimagesize($path));
}
}
因为我的$ images中的最后一个逗号我收到错误
Warning: getimagesize(): Filename cannot be empty in I:\zzerver\Uwamp -port 84\uw-cms-p8585\www\test\php\images\dataimage-explode1-1.php on line 9
我试过了:if (!empty($path) || getimagesize($path)!== false)
但似乎不起作用,我得到了同样的错误
答案 0 :(得分:3)
问题在这里
if (!empty($path) || getimagesize($path)!== false) {
当$path
为空时,php会检查第二个条件getimagesize($path)
,这会给你一个警告,因为你检查getimagesize('')
。
所以,正确的规则是:
if (!empty($path) && getimagesize($path) !== false) {
答案 1 :(得分:1)
我可以建议这样做
$expl = preg_split('@,@', $images, null, PREG_SPLIT_NO_EMPTY);
这将自动删除所有空条目
答案 2 :(得分:1)
@u_mulder是对的,但你也应该使用,
删除不必要的$expl = explode (',', trim($images,','));
逗号
<div class="container-fluid">
<nav class="navbar navbar-default navbar-fixed-top">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Patryk Jamróz</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li class="active"><a href="#about">About <span class="sr-only">(current)</span></a></li>
<li><a href="#projects">Projects</a></li>
<li><a href="#contact">Contact </a></li>
</ul>
</nav><!-- navbar -->
<div data-spy="scroll" data-target="#nav" data-offset="0">
<h3 class="text-center" id="about">about</h3>
<h3 class="text-center" id="projects">projects</h3>
<h3 class="text-center" id="contact">contact</h3>
</div>
答案 3 :(得分:0)
除了修复逻辑错误,您还可以简化条件
if ($path && getimagesize($path) !== false) { ...
empty
过分,因为它包含isset
检查,考虑$path
始终由foreach循环设置,这是不必要的。如果$path
为空字符串,则会将其评估为false。