我正在开发一个显示图像和相关标题的简单图像库。 所有图像都在目录中,而另一个图像在另一个目录中(作为单个文件)。 php脚本列出两个目录中的所有文件,并在用户按下按钮时将数组传递给更改图像和标题的javascript。
[...]
for($x = 2; $x < $lenght; $x++) {
$filesi[$x] = $imgdirectory."/".$lsi[$x];
}
for($x = 2; $x < $lenght; $x++) {
$filename = $capdirectory."/".$lsc[$x];
$filesc[$x] = file_get_contents($filename);
}
//Create array for JS
$captions = '["' . implode('", "', $filesc). '"]';
$images = '["' . implode('", "', $filesi). '"]';
?>
<script>
var captions = <?php echo $captions; ?>;
var images = <?php echo $images; ?>;
[...]
图片工作正常,我也可以打印标题的文件名而不是标题 即。
$filesc[$x] = $filename;
但是当我使用“file_get_contents()”来读取文件时,图库就会停止工作。
如果我回显$ captes并手动设置$ caption具有相同的输出 e.g。
$captions='["first caption","second caption", "..."]';
图库正常工作,因此阵列应正确格式化......
提前谢谢
解 我正在创建一个带有两个空元素(0,1)的数组,以避免文件列表中的./和../,所以我在lsi索引中添加了+2。
for($x = 0; $x < $lenght-2; $x++) {
$filesi[$x] = $imgdirectory."/".$lsi[$x+2];
}
另外我按照建议使用了json_encode,而不是手动json编码。输出似乎是相同的,但现在画廊工作!
var images = <?php echo json_encode($filesi); ?>;
答案 0 :(得分:0)
在JS中,你必须在这样的字符串中转义新行:
var multilineString = "this is\
just an example";
如果你不想用json_encode()更容易,可以尝试使用trim()和str_replace()。
更新
然后我错了。您是否知道可以仅使用$array[] = 'item';
将项目推送到数组?