IMG标签显示来自文件夹的IMG,但背景图像却不



我正在使用以下代码将用户上传插入投资组合。它运行良好,但是一个图像(在许多列表中)正在显示空白 - 但使用相同的路径在下一页显示,但在常规的<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); ?>'); double background-image:url("<?php echo site_url($user_avatar); ?>");,则它可以通过,但是如果我在实际代码中进行此更改,则不是这种情况。

任何帮助都会很棒。

谢谢

您是否尝试过删除单引号?这样:

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

我找到了解决方案。这与用户文件名有关,其中包含我没有检查的特殊字符,例如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);
    } 
}

谢谢

最新更新