问题 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。谢谢。


8887
2018-04-29 02:46


起源



答案:


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

在使用中 $POST[...] 在PHP中,您需要注意这个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']


14
2018-04-29 05:46



感谢您发布第二个链接! - Michael
以下是name属性的相应HTML5文档: w3.org/TR/html5/... - Nico O
@Jukka K. Korpela:如果你写的话,这是什么意思 Do not confuse the with the references to attributes declared as having NAME type.?哪个或有什么区别? - John
声明为具有的属性 NAME type是一个HTML 4概念,基于它正式的SGML应用程序。该 NAME 属性的正式定义中的关键字表示属性值必须以字母开头,并且可能只包含字母,数字和下划线。声明的属性在“类型”列中有“NAME” 属性索引 (在HTML 4规范中)。 HTML5之后不再使用这个概念,它不使用SGML形式。 - Jukka K. Korpela


答案:


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

在使用中 $POST[...] 在PHP中,您需要注意这个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']


14
2018-04-29 05:46



感谢您发布第二个链接! - Michael
以下是name属性的相应HTML5文档: w3.org/TR/html5/... - Nico O
@Jukka K. Korpela:如果你写的话,这是什么意思 Do not confuse the with the references to attributes declared as having NAME type.?哪个或有什么区别? - John
声明为具有的属性 NAME type是一个HTML 4概念,基于它正式的SGML应用程序。该 NAME 属性的正式定义中的关键字表示属性值必须以字母开头,并且可能只包含字母,数字和下划线。声明的属性在“类型”列中有“NAME” 属性索引 (在HTML 4规范中)。 HTML5之后不再使用这个概念,它不使用SGML形式。 - Jukka K. Korpela


尝试用句号代替连字符。在表单和PHP代码中。期间通常用于a。在扩展名中。对于get或post标头中的参数的键名,您只希望使用字母数字字符,通常包含一些特殊字符。如连字符,下划线等。如果需要,您也可以随时进行URL编码。


1
2018-04-29 02:54





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


0