我正在尝试使用basename
从图像路径中获取文件名并在标题标记内回显它但我无法使其工作,因为我从函数文件中回显了图像路径
我现在要做的是(在product.php中):
$path = ProductBekijkPlaatje($contenti[0]['images']);
$basename = basename($path);
echo $basename;
但是这会破坏函数并且只回显文件路径,而实际图像会丢失。
这是我调用的函数(在functions.php中):
function ProductBekijkPlaatje($plaatje) {
$path = $img->image_intro;
$basename = basename($path);
$img = json_decode($plaatje);
if ($img->image_intro == '') {
$image = '<img src="images/no-img.jpg" alt="">';
} else {
$image = '<img class="shorterimageimg" title="'.$basename.'" src="cms/'.$img->image_intro.'" alt="'.$img->image_intro_alt.'" >';
}
return $image;
}
我也尝试在函数内部的标题中显示图像名称,但这也不起作用。我做错了什么?
答案 0 :(得分:2)
它在您的函数中不起作用,因为您在执行json_decode()
之前尝试访问该对象的属性:
$path = $img->image_intro; // $img doesn't exist here
$basename = basename($path);
$img = json_decode($plaatje); // here $img is created
将json_decode()
移到前面:
$img = json_decode($plaatje);
$path = $img->image_intro;
$basename = basename($path);
现在,您可以修改函数以返回包含不同信息的数组:
function ProductBekijkPlaatje($plaatje) {
$img = json_decode($plaatje);
$return = array();
$return['path'] = $img->image_intro;
$return['basename'] = basename($return['path']);
if ($img->image_intro == '') {
$return['image'] = '<img src="images/no-img.jpg" alt="">';
} else {
$return['image'] = '<img class="shorterimageimg" title="'.$return['basename'].'" src="cms/'.$img->image_intro.'" alt="'.$img->image_intro_alt.'" >';
}
return $return;
}
然后您可以稍后使用此数组:
$image = ProductBekijkPlaatje($contenti[0]['images']);
echo $image['image']; // contains the html output
echo $image['basename']; // contains the basename only