从图像路径获取文件名(来自函数)

时间:2016-03-08 10:26:30

标签: php html

我正在尝试使用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;

}

我也尝试在函数内部的标题中显示图像名称,但这也不起作用。我做错了什么?

1 个答案:

答案 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