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

Php 是否将.txt文档插入选择下拉列表?,php,Php,我不确定这是否是最好的方法,或者这是否可能,但是我试图实现的是在选择的下拉列表中呼出所有这些国家,这里是列表 因此,我的问题是,我将如何在选择的下拉列表中显示这些信息,或者如果我无法以我尝试的方式显示这些信息,那么在不手动将每个国家添加到表单中的情况下,最好的方式是什么 <select> <option value="GB: United Kingdom">GB: United Kingdom</option> <option value="et

我不确定这是否是最好的方法,或者这是否可能,但是我试图实现的是在选择的下拉列表中呼出所有这些国家,这里是列表

因此,我的问题是,我将如何在选择的下拉列表中显示这些信息,或者如果我无法以我尝试的方式显示这些信息,那么在不手动将每个国家添加到表单中的情况下,最好的方式是什么

<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>

英国:联合王国
等
等
等

简短的回答是是的这是可能的,但这是最好的方法吗,不是,除了纯文本存储,还有许多其他更好的方法

如果您需要建议,我会告诉您从DB表或JSON,甚至从XML来执行

如果你打算改变主意,使用其中一种方法,我建议你用谷歌搜索它(你可以找到适合你的应用程序的结构)

我最近使用了以下两种方法作为指导:

  • 格式
  • 格式
现在我使用的是JSON格式

要访问和填充select Your can use javascript,尤其是JQuery将非常方便,如下所示:

$.getJSON( "test.json", function( data ) {
  var items = [];
  $.each( data, function( key, val ) {
    items.push( "<option value='" + key + "'>" + val + "</option>" );
  });
});  
$json = file_get_contents('your_json_url');
$countries = json_decode($json);
foreach ($countries as $option){
  echo "<option value='" .$option[key]. "'>" .$option[$value]. "</option>";
}
$.getJSON(“test.json”),函数(数据){
var项目=[];
$。每个(数据、函数(键、值){
项目。推送(“+val+”);
});
});  
有关更多信息,请查看

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

$.getJSON( "test.json", function( data ) {
  var items = [];
  $.each( data, function( key, val ) {
    items.push( "<option value='" + key + "'>" + val + "</option>" );
  });
});  
$json = file_get_contents('your_json_url');
$countries = json_decode($json);
foreach ($countries as $option){
  echo "<option value='" .$option[key]. "'>" .$option[$value]. "</option>";
}
$json=file_get_contents('your_json_url');
$countries=json_decode($json);
foreach($国家作为$选项){
回显“$option[$value]”;
}
如果您想从您的数据库中执行此操作,只要您还获得了一个数组,那么过程实际上是类似的

如果您仍想继续使用.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>

空军:阿富汗
AX:奥兰群岛
.....

备注:问题中提到的.txt文件包含世界国家列表。它是一个内容固定的列表;它在程序执行期间不会改变,在程序的不同执行之间也不会改变。当从列表中添加或删除条目时,它有时会更改,但不是经常更改。更多情况下,现有项目的代码或名称会更改

此答案是根据文件内容定制的。这不是一个适合所有情况的食谱


最好的方法(给定您要加载的文件的内容)是在PHP代码中,在一个单独的文件中按国家代码索引国家名称列表

类似这样的文件(文件
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>


您逐行读取文件,因此对所有行进行迭代。在每次迭代中,剩下要做的就是输出一个select选项,在该选项中您可以根据需要填写行内容。您尝试过什么吗?请发布你的代码。谢谢@arkascha和aslawin我不知道从哪里开始实现这一点。你能提供一个例子吗?不过,我很感谢您的评论,如果我知道从何处开始跟踪此问题的答案,我将更容易在网上查找此问题:@alexander.polomodov非常有用,谢谢。问题清楚地标记为,您提供了一个Javascript解决方案。@axiac适应技术任务从来不是最好的方式,你应该知道,作为体验用户,你是,他实际上是在寻求建议和指导。无论如何,你是对的,我将编辑它并添加一个php函数:)@axiac Done editing到一个更有效的答案中,谢谢你的反馈。答案显然是关于如何使用纯文本文件的。如果在你对情况一无所知的情况下,对一种形式进行评判并赞扬另一种形式是有意义的,这是值得怀疑的。当源数据由某些外部资源提供时,通常会出现此类问题。在这种情况下,首先将其转换为您喜欢的格式是毫无意义的。注意:我没有反对你的建议,但是为什么不简单地回答问题呢?@arkascha我只是觉得这样回答对OP和所有其他可能来的用户更有用,如果我问了一些问题,并且有不好的做法(不可怕,还有更坏的做法)我希望别人告诉我正确的方法,而不是直接回答。所以我不会删除这个答案,尽管分数很高,以防万一有人认为与我一样的方法非常有用我只是添加了使用
$listCountries
生成HTMLT的代码这是有问题的,因为它不能扩展。您的方法需要将所有数据保存在内存中,甚至将其相乘几次。这意味着随着列表大小的增加,您的内存消耗呈指数级增长。此外,这不允许以动态方式交换数据资源。在我看来,这并不是一个很好的解决方案,尽管确实有效。@arkascha列表是固定的。上面没有什么可缩放的。这是世界各国的名单。它并不是每天都在变化。当它改变时,它可能会随着一个项目而放大或缩小。代码或国家名称更经常发生变化。内存消耗<代码>35616字节
使用PHP5.6<代码>12344字节
使用PHP7.0。由于代码不会更改列表,PHP不会在内存中保留它的多个副本。没有任何东西阻止您使用其他东西初始化
$listCountries
(但这没有多大意义)。我不知道列表是否更改。那是一头驴
$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");