将.txt文档插入选择下拉列表?

时间:2016-03-08 15:01:03

标签: php

我不确定这是否是这样做的最佳方式,或者如果它甚至是可能的,但我想要实现的是回应所有这些国家,因为列表中的选择下拉列表是列表{ {3}}

所以我的问题是如何在选择下拉列表中显示这些内容,或者如果我不能按照我尝试的方式执行此操作,那么最好的方法是在不手动将每个国家/地区添加到表单的情况下?

<select>
  <option value="GB: United Kingdom">GB: United Kingdom</option>
  <option value="etc">etc</option>
  <option value="etc">etc</option>
  <option value="etc">etc</option>
</select>

3 个答案:

答案 0 :(得分:0)

一个肯定需要更多爱的简单例子:

<?php
$fh = fopen('list.text', 'r');
?>

<select>
<?php
while ($line = fgets($fh, 1024)) {
    echo sprintf('  <option value="%1$s">%1$s</option>'."\n", trim($line));
}
?>
</select>

输出显然是:

<select>
  <option value="AF:Afghanistan">AF:Afghanistan</option>
  <option value="AX:Åland Islands">AX:Åland Islands</option>
  .....
</select>

答案 1 :(得分:0)

备注:问题中提到的.txt文档包含世界国家/地区列表。这是一个固定内容的列表;它在程序执行期间不会改变,它在程序的不同执行之间不会改变。当在列表中添加或删除条目时,它有时会更改,而不是经常更改。更常见的是,现有项目的代码或名称会发生​​变化。

此答案是根据文件内容量身定制的。它不适合所有情况。

最好的方法(考虑到要加载的文件的内容)是在PHP代码中将国家/地区代码索引的国家/地区列表列在一个单独的文件中。

像这样(文件listCountries.php):

<?php
// ISO-3166 country codes
return array(
    'AF' => 'Afghanistan',
    'AX' => 'Åland Islands',
    'AL' => 'Albania',
    // ...
);
// This is the end of file; there is no need for a PHP close tag

当你需要使用它时,你所要做的就是写下这样的东西:

$listCountries = include 'listCountries.php`;

当然,您应该将它放在包含文件的目录中,并处理include行中的路径。

然后,您可以遍历$listCountries并生成所需的HTML代码:

<select>
<?php 
// Assuming the country with code $selectedCode have to be already selected in the list
foreach ($listCountries as $code => $name) {
    $selected = ($code == $selectedCode) ? ' selected="selected"' : '';
    echo('<option value="'.$code.'"'.$selected.'>'.htmlspecialchars($name)."</option>\n");
}
?>
</select>

您可以在编辑器中使用搜索和替换生成文件(如果它知道搜索并替换为正则表达式),或者您可以编写一些PHP脚本来为您生成列表:

$listCountries = array();
$fh = fopen('http://www.textfixer.com/resources/dropdowns/country-list-iso-codes.txt', 'r');
while (! feof($fh)) {
    list($code, $name) = fgetcsv($fh, 0, ':');
    $listCountries[$code] = $name;
}
fclose($fh);

echo("<?php\n");
echo('$listCountries = ');
var_export($listCountries);
echo(";\n");
echo("// That's all, folks!\n");

使用PHP命令行运行它,它会将列表的PHP代码转储到输出中。您可以将其输出重定向到文件或更改它以将代码写入文件(第一个选项更容易)。

您可以在Wikipedia上阅读有关ISO-3166国家/地区代码的更多信息,或者直接从authoritative source获取最新信息:ISO。

答案 2 :(得分:-2)

简短的回答是这是可能的,但这是最好的方法吗? ,事实并非如此,除了纯文本存储之外还有许多其他更好的方法。

如果您征求建议,我会告诉您从数据库表或JSON,甚至是XML中执行此操作。

如果您要改变主意并使用其中一种方法,我建议您进行谷歌搜索(您可以找到适合您应用的结构)。

作为指导,我最近使用了这两个:

就我而言,我正在使用JSON格式。

要访问和填充您可以使用javascript的选择,更特别是JQuery会很方便,如下所示:

$.getJSON( "test.json", function( data ) {
  var items = [];
  $.each( data, function( key, val ) {
    items.push( "<option value='" + key + "'>" + val + "</option>" );
  });
});  

有关详细信息,请查看official manual

如果您希望在服务器上填充下拉列表,则可以执行以下操作:

$json = file_get_contents('your_json_url');
$countries = json_decode($json);
foreach ($countries as $option){
  echo "<option value='" .$option[key]. "'>" .$option[$value]. "</option>";
}

如果你想从你的数据库中做到这一点,只要你得到一个数组,进程就会非常相似。

如果您仍想继续使用.txt格式,则@arkascha和@axiac答案完全有效。

希望这对你有帮助;)