HTML 中 "name" 属性的有效值



我使用 PHP 从 HTML 页面获取单选按钮值。我的 HTML 看起来像这样:

<input type="radio" name="1.1" value="yes">
<input type="radio" name="1.1" value="no">
<input type="radio" name="1" value="yes">
<input type="radio" name="1" value="no">

结果是 $_POST['1'] 返回一个值,但 $_POST['1.1'] 不返回任何值。我检查了 HTML 4 规范,比如 name 属性的值只以字母开头,但 1 不是字母。为什么它被返回而 1.1 没有?还是这里发生了其他魔法?我使用的是最新版本的 Chrome。

根据 HTML 规则,name 属性可以具有任何值:它是使用 CDATA 类型声明的。不要将此属性与声明为具有 NAME 类型的属性的引用混淆。参见 17.4 输入元素,名称 = cdata [CI]。

在 PHP 中使用 $POST[...] 时,您需要注意以下 PHP 规则:"变量名称中的点和空格将转换为下划线。例如,<input name="a.b" />变得$_REQUEST["a_b"]。请参阅来自外部源的变量

所以$_POST['1']应该按原样工作并且确实有效,但你需要写$_POST['1_1']而不是$_POST['1.1'].

尝试将

句点替换为连字符等其他内容。在形式和 PHP 代码中。句点通常用于扩展名称中的.

当涉及到 GET 或 POST 标头中参数的键名时,您只想使用字母数字字符,通常使用一些特殊字符。如连字符、下划线等。如果需要,您也可以始终进行 URL 编码。

您应该用文本而不是数字来命名输入项。 它们不应包含任何字符,如.,!?。这可能会导致问题。 有关提交数据的更多信息,请转到 PHP 和 HTML 单选按钮

最新更新