如何从提交的表单结果中隐藏 PHP 分解分隔符



我创建了一个表单,该表单利用.txt文件从中提取员工的名称,并使用PHP爆炸函数将它们分解为SELECT表单选项。

<select name="FakeName" id="Fake-ID" aria-required="true" required>
 <option value=""></option>
  <?php
   $options=nl2br(file_get_contents("employees.txt"));
   $options=explode("<br />",$options);
   for($i=0;$i<count($options);$i++)
   {
    echo "<option value='".$options[$i]."'>".$options[$i]."</option>";
   }
 ?>
</select>

.txt文件如下所示:

Name 1
Name 2
Name 3
ETC

现在,这在网站上的表单中工作并正确分解它,一切看起来都很好。但是,当结果提交到电子表格(在本例中为GOOGLE电子表格)时,输出包括"中断",因此它以类似于以下内容的格式进入电子表格:

Row 1: Name 1
Row 2:
       Name 2
Row 3:
       Name 3
Row 4:
       ETC

我正在尝试弄清楚如何更改代码或其他内容,以便分隔符本身不会作为结果的一部分提交。注意:使用任何分隔符提交。我尝试了"\"或";",它提交结果。

不要使用

nl2br() 添加换行符,然后使用 explode() 删除换行符,而是尝试使用换行符 '\r' 或 '' 或 '\r'。

<?php
    $options= file_get_contents("employees.txt");
    $options=explode("n",$options);        // try r as well.
    foreach ($options as $singleOption){
        echo "<option value='".$singleOption."'>".$singleOption."</option>";
    }
 ?>

如果问题是由于Google电子表格读取换行符引起的,这也可以解决问题。

您可以尝试不同的方法,例如逐行读取文件,而不是处理所有这些 nl2br/爆炸性的东西。

$fh = fopen("employees.txt", "r");
if ($fh) {
    while (($line = fgets($fh)) !== false) {
        $line = trim($line);
        echo "<option value='".$line."'>".$line."</option>";
    }
} else {
    // error opening the file, do something
}

另外,也许只是进行修剪(从字符串的开头/结尾删除空格)是您的问题?

也许人们只是误解了你所说的"将结果提交到电子表格"是什么意思 - 你是用代码做的吗?还是从HTML页面复制/粘贴到电子表格中?也许你可以更详细地解释一下。拆分文件行的分隔符无论如何都不应显示在输出中,除非由于其他原因出现意外输出。

<select name="FakeName" id="Fake-ID" aria-required="true" required>
<?php
$options=nl2br(file_get_contents("employees.txt"));
$options=explode("<br />",$options); 
foreach ($options as $item_array)
{
echo "<option value='".$item_array"'>".$item_array"</option>";
 }
?>
</select>

最新更新