G'day,第一篇文章,所以我们开始了。非常愿意接受建议,因为我不确定是否可以用我正在使用的编码类型做我想做的事情。编码有点新/生锈,是一个懒洋洋的时代。
当前编码的目的:
我有一个.txt
文件,其中包含文件名列表(地图名称与我的情况完全相同,每个名称都在自己的行上),当我们add/remove
地图时,该文件不断被更改和修改。我正在使用.php
页面上的脚本来解析该文件的内容并在网页上显示结果。该脚本将每个映射名称输出到包装在 href
标记中的变量,从而生成下载该特定映射的链接。这将持续到在列表中创建所有地图为止,每个地图都作为下载该地图的链接。
我遇到的问题:
我不希望某些maps/entries
创建为链接,而仅创建为文本。有没有办法过滤fgets()
的结果并根据值设置不同的样式?所以像map1-map4一样,所有都变成了下载链接,但map5没有,然后map6和继续是下载链接。
当前使用的脚本/代码:
<?php
$file = fopen("maplists/dodgeball.ini", "r");
while (!feof($file)) {
$dbmapname[] = fgets($file);
}
fclose($file);
foreach ($dbmapname as $dbmap){
echo "<a href='http://www.mydownloadurl.com/fastdl/maps/" . $dbmap . ".bsp.bz2'>$dbmap</a><br />";
}
?>
由于下面的帮助,编码修改了。这是我当前的编码,以生成我正在寻找的内容:
foreach ($dbmapname as $dbmap){
if(!in_array($dbmap, $stockmaps)){
echo "<a href='http://www.mydownloadurl.com/fastdl/maps/" . $dbmap . ".bsp.bz2'>$dbmap</a><br />";
}
else echo $dbmap."<br />";
}
我仍然有一个小问题,关于数组的最后一个条目被强制为链接,无论它是否在$stockmaps
数组中。
有很多方法可以实现这一点。下面我介绍了一种很好的通用方法,您可以创建一个不需要链接的地图数组,然后根据每个地图是否在列表中循环并打印链接或纯文本。
<?php
$file = fopen("maplists/dodgeball.ini", "r");
while (!feof($file)) {
$dbmapname[] = trim(fgets($file));
}
fclose($file);
$nolink = array( $dbmapname[4] ); //fifth map
foreach ($dbmapname as $dbmap){
if(!in_array($dbmap, $nolink)){
echo "<a href='http://www.mydownloadurl.com/fastdl/maps/" . $dbmap . ".bsp.bz2'>$dbmap</a><br />";
}
else echo $dbmap."<br />";
}
}
?>
您可以根据所需的任何条件将项目添加到筛选器
//Add item 2 to the list
$nolink[] = $dbmapname[1];
//Add all items after item 20 to the list
$nolink = array_merge($nolink, array_slice($dbmapname, 20));
//Don't link a specific set of maps
$nolink = array('bad_map', 'another_map_not_to_show');