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);