2012-04-29 153 views
10

我使用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。謝謝。

回答

12

通過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

1

嘗試用週期代替其他事物,如連字符。在表單和php代碼中。期間通常用於a。在擴展名中。當涉及get或post標題中的參數的關鍵名稱時,您只想使用字母數字字符,並且通常使用一些特殊字符。如連字符,下劃線等。如果您需要,也可以隨時進行URL編碼。

0

這很容易解決2秒谷歌搜索我的朋友。另外,你應該用文字命名你的輸入項目,而不是數字。他們不應該包含任何字符,如。,!?這可能會導致問題。有關提交數據的更多信息,請轉至http://www.homeandlearn.co.uk/php/php4p10.html