PHP动态更改文件名
我今天早些时候得到了一些帮助,但是我没有从原始脚本中获得所有工作。 基本上我在.txt文件中有一个图像文件名列表。 它们每个都以幻灯片forms加载,并随着页面上的分页而变化。
我想做的是,如果我有一个扩展名为.mov的文件,例如,php脚本将加载一个电影播放器。
这是原始幻灯片脚本
<?php echo" "; $photos = file("work.txt"); foreach ($photos as $image) { $item = explode("|", $image); if ($item[0] == $fields[0]) { $photo = trim($item[1]); echo"\n"; } } echo" " ?>
这是我尝试做这项工作的不良尝试……
<?php $photos = file("work.txt"); $img = array('jpg', 'png', 'gif'); $vid = array('swf', 'mp4', 'mov', 'mpg', 'flv'); foreach ($photos as $image) { $item = explode("|", $image); if ($item[0] == $fields[0]) { $photo = trim($item[1]); $ext = explode(".", $image); if (in_array($ext[1], $img)) { echo " "; } elseif (in_array($ext[1], $vid)) { echo ""; } } } ?>
如果有人能帮助我最终将这个剧本变为现实,我将非常感激! 🙂
我看到的最可能的问题是$ext
的赋值应该与$item
或$photo
而不是$image
。 如果能解决它,那就太好了。 否则,请阅读下面的内容,以获得更完整的分析和一些调试步骤的建议,直到您缩小问题原因。
假设所有数据都是准确的,那么您编写的脚本看起来应该可以正常工作。 我在这里重新格式化以进行一些分析:
"; } elseif(in_array($ext[1], $vid)) { echo ""; } } } ?>
此脚本中有三个主要位置可以发生导致无法输出的问题。
第一个是在foreach()
循环中。 如果$photos
数组中没有任何内容,您将跳过整个代码块。 您可以通过添加print_r($photos);
来测试这种情况print_r($photos);
在foreach()
之前,然后作为foreach()
体内的第一行添加echo $image." ";
validation是否按预期列出了所有文件。 如果看起来正确,请删除该调试代码并继续。
问题的第二个可能性是$item[0]
不等于$fields[0]
。 要测试这个,添加echo 0;
作为if($item[0]==$fields[0])
里面的第一行。 如果在运行脚本时看到预期的零,则可以删除此调试代码并继续。
第三个问题的可能性是拉伸/检查扩展。 问题的一个可能的候选者是,如果$ext
的分配应该绑定到$item
或$photo
而不是$image
但肯定存在其他可能的问题。 要测试这个,请添加echo $image." ".$ext[1]."\n"; print_r($img); print_r($vid);
echo $image." ".$ext[1]."\n"; print_r($img); print_r($vid);
在if(in_array($ext[1], $img))
之前if(in_array($ext[1], $img))
。 然后在echo 3;
的主体中添加一个临时的else子句echo 3;
同样。 validation是否
一旦你弄清楚代码中的哪个条件导致了问题,你就会很好地解决问题。 我的猜测是你将通过测试,或者在我们假设工作正确的早期部分中找到一个明显的错误,或者你最终将打印3个很多。 在后一种情况下,一个可能的问题可能来自较低/大写差异,这可以通过将$item
赋值更改为$item=strtolower(explode("|", $image);
来解决$item=strtolower(explode("|", $image);