html中名称属性的有效值

html中名称属性的有效值

问题描述:

我使用PHP从html页面获取单选按钮值。我的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的规格,说名称属性的值只以字母开头,但1不是一个字母,它怎么得到它返回而1.1不呢?还是在这里发生了一些其他的魔法?我使用最新版本的Chrome。谢谢。

通过HTML规则,name属性可能具有任何值:它是用CDATA类型声明的。不要混淆与声明为具有NAME类型的属性的引用。请参阅http://www.w3.org/TR/html4/interact/forms.html#adef-name-INPUT

在使用PHP中的$POST[...]时,您需要注意以下PHP规则:“变量名中的点和空格将转换为下划线。例如<input name="a.b" />成为$_REQUEST["a_b"]。”见http://www.php.net/manual/en/language.variables.external.php

所以$_POST['1']将正常运行是和工作,但不是$_POST['1.1']你需要写$_POST['1_1']

+0

感谢您发布第二个链接! – Michael 2012-04-29 07:27:42

+0

以下是name属性的相应HTML5文档:https://www.w3.org/TR/html5/forms.html#naming-form-controls:-the-name-attribute – 2017-03-28 15:18:52

+0

@Jukka K. Korpela:什么这是否意味着,如果你写'不要混淆与被声明为具有NAME类型的属性的引用。在哪里或有什么区别? – John 2017-11-25 03:10:09

尝试用周期代替其他事物,如连字符。在表单和php代码中。期间通常用于a。在扩展名中。当涉及get或post标题中的参数的关键名称时,您只想使用字母数字字符,并且通常使用一些特殊字符。如连字符,下划线等。如果您需要,也可以随时进行URL编码。

这很容易解决2秒谷歌搜索我的朋友。另外,你应该用文字命名你的输入项目,而不是数字。他们不应该包含任何字符,如。,!?这可能会导致问题。有关提交数据的更多信息,请转至http://www.homeandlearn.co.uk/php/php4p10.html