【问题标题】:How do I hide the PHP explode delimiter from submitted form results?如何从提交的表单结果中隐藏 PHP 爆炸分隔符?
【发布时间】:2014-01-18 18:26:54
【问题描述】:

我创建了一个表单,它利用 .txt 文件从中提取 EMPLOYEES 的姓名,并使用 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

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

【问题讨论】:

  • 你为什么要炸它
    ,是不是一个html文档。通常文本文档会 \n 或 \r
  • @SaravanaKumar 因为使用 /n 或 /r 或任何其他物理上可见的分隔符会作为结果进入电子表格。所以我决定使用&lt;br /&gt;,因为它在 .txt 文件中实际上是看不见的,因为它只是向下一行,因此在结果中似乎是看不见的。直到今天我才意识到结果实际上有换行符。
  • 您在向电子表格写入内容吗?我很困惑。
  • @SaravanaKumar 是一个表单,提交到电子表格时包含分隔符。
  • 选项值中没有&lt;br/&gt;。您可能会将它们添加回处理表单的代码中。这就是我们需要看到的代码。

标签: php forms explode delimiter nl2br


【解决方案1】:
<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>

【讨论】:

  • 尝试了这个,但不确定它做了什么不同,但结果都是一样的,电子表格仍然包括分隔符。
【解决方案2】:

您可以尝试不同的方法,例如逐行读取文件,而不是处理所有这些 nl2br/explode 内容。

$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 页面复制/粘贴到电子表格中?也许你可以更详细地解释一下。除非您出于某些其他原因有意外的输出,否则您分割文件行的分隔符无论如何都不应该显示在输出中。

【讨论】:

  • 其他答案之一对我有用,但在某些时候我将不得不尝试您列出的内容。另一方面,表单提交过程由 GOOGLE 处理。我在他们的系统上创建了一个表单,然后认真编辑它以适应网页。因此,表单提交到一个谷歌表单 URL,该 URL 将响应放在电子表格中。
【解决方案3】:

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

<?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 电子表格读取换行符造成的,这也可以解决问题。

【讨论】:

  • 好吧,/n 似乎不起作用,因为它在表单结果中的字符串之后添加了一个中断......这更好。然后我尝试了/r,它导致了字符串前中断的原始问题。然而,第三次是一个魅力,/r/n 似乎工作得很好,选项字符串的任何一侧都不再有任何中断。我真的需要更多地专注于学习我的 PHP 并了解这一切。不过谢谢。
  • 很高兴我能帮上忙。我认为问题在于 /r/n 已添加到
猜你喜欢
  • 1970-01-01
  • 2011-06-24
  • 2019-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多