img标签从文件夹显示img但背景图像不显示?

时间:2017-11-22 11:48:33

标签: php html css

我使用以下代码将用户上传到投资组合中。它工作得很好但是一个图像(在众多列表中)显示为空白 - 但在下一页上显示,使用相同的路径,但在传统的<img />标记内。

<?php
    $files= glob('./uploads/users/'. $item->user_id .'/'.$item->id.'/public_large/*');
    $count = 0;
    $user_avatar = '/themes/users/assets/img/noartwork.jpg'; 

    foreach ($files as $file) {
        $count++;
        if ($count > 0 && is_file($file)) { 
            $user_avatar = $file;
        } 
    }
?>   
<div class="user-img" style="background-image:url('<?php echo site_url($user_avatar); ?>');"></div>

当我检查图像上没有显示的元素时,如果我将单引号background-image:url('<?php echo site_url($user_avatar); ?>');更改为加倍background-image:url("<?php echo site_url($user_avatar); ?>");,则它会通过,但如果我这样做则不是这种情况更改实际代码。

任何帮助都会很棒。

由于

2 个答案:

答案 0 :(得分:1)

你试过删除单引号吗?像这样:

 background-image:url(<?php echo site_url($user_avatar); ?>);

答案 1 :(得分:1)

我找到了解决方法。它与包含特殊字符的用户文件名有关,我没有检查例如my-user's-image.jpg会破坏代码,因为角色需要转义my-user\'s-image.jpg

我修改了foreach以运行检查,如下所示,现在正在运行。

foreach ($files as $file) {
    $count++;
    if ($count > 0 && is_file($file)) { 
        $user_avatar = str_replace("'", "\'", $file);
    } 
}

由于