我正在使用以下代码将用户上传插入投资组合。它运行良好,但是一个图像(在许多列表中)正在显示空白 - 但使用相同的路径在下一页显示,但在常规的<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);
}
}
谢谢