【问题标题】:PHP - Missing spaces/underscores in POST keyPHP - POST 键中缺少空格/下划线
【发布时间】:2013-06-17 22:28:37
【问题描述】:

我有一个 HTML 表单:

<html>
    <body>
        <form method="post" action="test.php">
            <input type="text" name="     TEST   " value="   TEST     "/>
            <input type="submit" />
        </form>
    </body>
</html>

它提交到以下PHP页面:

<?php
var_dump($_POST);

当我提交表单而不修改任何值时,结果页面显示:

array(1) { ["TEST___"]=> string(12) " TEST " }

键名中左边的空格/下划线在哪里?我怎样才能找回左边的空格/下划线?

【问题讨论】:

  • 没有。我已经看过了。它解释了为什么将空格转换为下划线,但没有解释左侧空格/下划线的去向。 @BabyAzerty

标签: php html post


【解决方案1】:

他们被丢弃了,你不能。 根据 HTML 4 规范: ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_") 、冒号 (":") 和句点 (".")。

HTML 5 的工作草案更加宽容,只是说 id 必须包含至少一个字符,并且不能包含任何空格字符。看: What are valid values for the id attribute in HTML?

【讨论】:

    【解决方案2】:

    为了安全起见,名称属性不要使用空格。

    【讨论】:

      【解决方案3】:

      为什么您希望您的输入名称包含所有这些空格? 也许有更好的解决方案来解决您想要实现的目标?

      【讨论】:

      • 我有一个更新调查结果的表格。关键是对数据进行规范化,我正在用另一个字段值大规模替换 $_POST 键是原始值,而 $_POST 值是新值。当然我可以使用多维数组,但这给这个简单的问题增加了新的复杂性,可以使用单个数组的键和值来解决。
      【解决方案4】:

      &nbsp 为我工作

      <html>
      <body>
          <form method="post" action="test.php">
              <input type="text" name="&nbsp&nbspTEST&nbsp&nbsp" value="   TEST     "/>
              <input type="submit" />
          </form>
      </body>
      

      &nbsp - 单个空间,更多空间使用更多

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-06
        • 2010-09-07
        • 1970-01-01
        相关资源
        最近更新 更多