我今天早些时候得到了一些帮助,但我没有从原始脚本中获得所有内容。基本上,我有一个.txt文件中的图像文件名列表。它们都以幻灯片的形式加载,并随着页面上的分页而改变。
我想做的是,如果我有一个文件的扩展名为。mov,例如,php脚本将加载一个电影播放器。
这是原始的幻灯片脚本
<div id='jessslide'>
<?php
echo"
<div id='slider-wrapper'>
<div id='slider' class='nivoSlider'>";
$photos = file("work.txt");
foreach ($photos as $image) {
$item = explode("|", $image);
if ($item[0] == $fields[0]) {
$photo = trim($item[1]);
echo"<img src='images/work/$photo' alt='' />'n";
}
}
echo"
</div></div>"
?>
</div>
这是我试图让这个工作的糟糕尝试…
<div id='jessslide'>
<?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 "<div id='slider-wrapper'><div id='slider' class='nivoSlider'><img src='images/work/$photo' alt='' /> </div></div>";
}
elseif (in_array($ext[1], $vid))
{
echo "<iframe src='$photo' width='800' height='450' frameborder='0' webkitAllowFullScreen allowFullScreen></iframe>";
}
}
}
?>
</div>
我真的很感激,如果有人能帮助我,最终把这个剧本的生活!:)
我看到的最有可能的问题是$ext
的赋值应该绑定到$item
或$photo
而不是$image
。如果这能解决问题,那就太好了。否则,请阅读下面的内容,以获得更完整的分析和一些调试步骤建议,直到您缩小问题的原因。
假设所有数据都是准确的,那么您编写的脚本看起来应该可以工作。我在这里重新格式化了它,以便进行一些分析:
<div id='jessslide'>
<?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 "<div id='slider-wrapper'><div id='slider' class='nivoSlider'><img src='images/work/$photo' alt='' /> </div></div>"; }
elseif(in_array($ext[1], $vid))
{ echo "<iframe src='$photo' width='800' height='450' frameborder='0' webkitAllowFullScreen allowFullScreen></iframe>"; }
}
}
?>
</div>
在这个脚本中,有三个主要的地方会出现问题,而这些问题不会导致任何输出。
第一个在foreach()
循环中。如果$photos
数组中没有任何内容,您将跳过整个代码块。您可以通过在foreach()
之前添加print_r($photos);
,然后在foreach()
主体的第一行添加echo $image." ";
来测试这种情况,以验证所有文件都如您所期望的那样列出。如果这看起来是正确的,删除调试代码并继续。
第二个潜在的问题是$item[0]
不等于$fields[0]
。为了测试这一点,将echo 0;
添加为if($item[0]==$fields[0])
中的第一行。如果在脚本运行时看到预期的零,则可以删除此调试代码并继续。
第三个潜在的问题是拉/检查扩展。一个可能的问题是,如果分配给$ext
应该与$item
或$photo
而不是$image
联系在一起,但肯定还有其他可能的问题。为了测试这一点,在if(in_array($ext[1], $img))
之前添加echo $image." ".$ext[1]."'n"; print_r($img); print_r($vid);
。然后用echo 3;
的主体添加一个临时的else子句。验证
一旦您弄清楚代码中的哪个条件导致了问题,您将在解决问题的道路上走得很好。我的猜测是,您将通过测试,要么在我们假设正确的早期部分中发现一个明显的错误,要么最终打印出大量的3。在后一种情况下,一个可能的问题可能来自大小写差异,这可以通过将$item
赋值更改为$item=strtolower(explode("|", $image);