无法正确检索图像名称

时间:2015-04-23 11:48:03

标签: php

我试图检索一组图像。所有图像都显得很好。但是,名称为“image_01”和“image_02”的图像将被检索为image_1和image_2。这是因为我使用的“str_replace”。有人能告诉我为什么会这样吗?

$image=$policy->gallery;     
$image = trim($image,'*');
$temp = explode('*',$image );
echo $temp[5];
// $temp = array_filter($temp);
foreach($temp as $image)
{
  $images[]=base_url()."images/park_photos/".trim( str_replace( array('['*']') ,"" ,$image ) );
  //echo trim( str_replace( array('['*']') ,"" ,$image ));
}
foreach($images as $image)
{
  echo "<img src='{$image}' style='width:100px; height:100px; display:block; float:left;' />";
}
?>

1 个答案:

答案 0 :(得分:2)

要修复它,您需要替换

$images[]=base_url()."images/park_photos/".trim( str_replace( array('['*']') ,"" ,$image ) );

$images[] = base_url() . trim($image);

甚至

$images[] = base_url() . $image;

发生了什么事?我想,使用此str_replace,您需要确保从图片名称中删除*。但是你之前已经做过($temp = explode('*',$image );)所以不需要复制。

现在,为什么0会从图片名称中删除?在array('['*']')中发生了一些“魔力”。由于引号序列,*字符被解释为乘法。要理解,请尝试这样做:

$a = '['*']';
var_dump($a);
// outputs: int(0)

为什么呢? PHP从上下文中猜测变量类型。在这种情况下的上下文是:将'['乘以']'。由于乘法适用于数字,因此PHP将两个字符串('['']')强制转换为整数,零。 (阅读更多关于Type Juggling)的信息 所以,str_replace( array('['*']') ,"" ,$image )等于str_replace( array(0) ,"" ,$image ) - 即“用空字符串替换零。