可以以不同的方式设置fgets($file)列表的每个结果的样式


Styling each result of an fgets($file) list differently, is it possible?

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