将.txt文档插入到选择下拉列表中?
我不知道这是否是这样做的最好办法,或者如果它甚至有可能但我想要做到的,是呼应了所有这些国家的名单中选择下拉这里是清单Country text document将.txt文档插入到选择下拉列表中?
所以我的问题是如何将我的选择下拉列表显示这些或者如果我不能做到这一点的办法,我试图做到这一点会是什么做的,而无需手动添加每个国家形式的最佳方式?
<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>
备注:中的.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脚本来为您生成列表:使用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代码列表输出。您可以将其输出重定向到一个文件或将其更改为将代码写入文件(第一个选项更简单)。
你可以阅读更多关于ISO-3166国家代码上Wikipedia或者你可以直接从authoritative source获得最新信息:在ISO。
简短的回答是肯定的它是可能的,但它是最好的方法是什么? 没有,实在不行,还有比纯文本存储等诸多更好的方法。
如果你请教我会告诉你从一个数据库表或从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>";
}
如果你想从你的databese做的proccess过程非常类似,只要你还可以得到一个数组。
如果您仍然希望使用.txt格式,以保持@arkascha和@axiac答案是完全有效的。
希望这有助于你;)
一个简单的例子,这当然需要更多的爱:
<?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>
大答案三江源。 – Peanuts
您可以逐行读取文件,因此遍历所有行然后在每次迭代中剩下要做的事情就是输出一个select选项,您可以根据需要填写行内容。 – arkascha
你尝试过什么吗?请发布您的代码。 – aslawin
Thankyou @arkascha和aslawin我不知道从哪里开始实现这个可能你可以提供一个例子吗?我很欣赏你的意见,但它会很容易让我在网上看这个知道从哪里开始 – Peanuts