为fgets($ file)列表的每个结果设置不同的样式,是否可能?

时间:2014-04-07 15:38:28

标签: php fgets

G'天,第一篇文章,所以我们走了。非常愿意接受建议,因为我不确定是否可以按照我正在使用的编码类型做我想做的事情。有点新的/生锈的编码,是一个LOOOONG时间。

当前编码的目的:

我有一个.txt文件,其中包含一个文件名列表(地图名称与我的情况完全相同,每个都在其上自己的行),我们{{1}不断更改和修改地图。我在add/remove页面上使用脚本来解析该文件的内容并在网页上显示结果。该脚本将每个地图名称输出到包含在.php标记中的变量,从而生成下载该特定地图的链接。这将一直持续到所有地图都已在列表中创建,每个地图都作为下载该地图的链接。

我遇到的问题:

我不希望将某些href创建为链接,并且仅作为文本创建。有没有办法过滤maps/entries的结果并根据值设置不同的样式?所以像map1-map4一样都变成了下载链接但map5没有,然后map6和on继续下载链接。

正在使用的当前脚本/代码:

fgets()

编码修改,感谢下面的帮助。这是我目前的编码,以产生我想要的东西:

<?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 />"; } 数组中。

1 个答案:

答案 0 :(得分:0)

有很多方法可以实现这一点。下面我介绍了一种很好的通用方法,您可以在其中创建一个不需要链接的地图数组,然后循环并打印链接或纯文本,具体取决于每个地图是否在列表中。

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