我正在尝试使用txt文件中的所有名称创建一个html下拉列表。我对一个PHP文件进行AJAX调用,该文件读取文本文件中的每一行。当我创建这样的字符串时,它工作正常:
<?php
...
$repDropdown = '';
while(!feof($file))
{
$rep = fgets($file);
$repDropdown .= '<option value="' . $rep . '">' . $rep . '</option>';
}
...
echo $repDropdown;
?>
然而,当我创建一个数组(由于各种原因我需要做)时,它失败了,我相信因为它使用HTML字符。我不知道如何解决这个问题。
<?php
$reps = array();
$repDropdown = '<option value=""></option>'; //array();
while(!feof($file))
{
$rep = fgets($file);
$repDropdown .= '<option value="' . $rep . '">' . $rep . '</option>';
}
$reps[0] = $repDropdown;
echo json_encode($reps)
?>
答案 0 :(得分:0)
或者你可以使用
$ array =“1”,“2”,“3”;
foreach($array->item as $reps){
echo '
<option value="' . $reps . '">' . $reps . '</option>';
}
答案 1 :(得分:0)
在你的while循环中,你需要使用trim($ rep)来摆脱换行符。在将数据插入数组之前,您还需要使用htmlentities($ repDropdown)。然后要从数组中检索它,你必须用html_entity_decode($ reps [0])来反转htmlentities()。
试试这段代码:
<?php
$reps = array();
$repDropdown = '<select>';
$fp = fopen("test.txt", "r");
while ( $current_line = fgets($fp) ) {
// do stuff to the current line here
$current_line = trim($current_line);
$repDropdown .= '<option value="' . $current_line . '">' . $current_line . '</option>';
}
$repDropdown .= '</select>';
fclose($fp);
$repDropdown = htmlentities($repDropdown);
$reps[] = $repDropdown;
echo json_encode($reps) . '<br />';
echo html_entity_decode($reps[0]);
?>
<强>文档强>
http://php.net/manual/en/function.trim.php
http://php.net/manual/en/function.htmlentities.php
http://us3.php.net/html_entity_decode