我今天早些时候得到了一些帮助,但是我没有从原始脚本中获得所有工作。基本上我在.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>
如果有人能帮助我最终将这个剧本变为现实,我将非常感激! :)
答案 0 :(得分:0)
我看到的最有可能的问题是$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
数组中没有任何内容,则可以跳过整个代码块。您可以在print_r($photos);
之前添加foreach()
,然后在foreach()
添加echo $image." ";
正文中的第一行来测试此情况,以验证所有文件都是按照您的预期列出。如果看起来正确,请删除该调试代码并继续。
问题的第二个可能性是$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);
之前添加if(in_array($ext[1], $img))
。然后添加一个临时的else子句,其主体为echo 3;
。验证是否
一旦你弄清楚代码中的哪个条件导致了问题,你就会很好地解决问题。我的猜测是你要通过测试,或者在我们假设正常工作的早期部分中找到一个明显的错误,否则最终将会打印3个。在后一种情况下,一个可能的问题可能来自较低/大写差异,这可以通过将$item
分配更改为$item=strtolower(explode("|", $image);
来解决