我有一个html文件与代码的形式
<select name="listbox" size="3">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
我在php脚本中使用的值。如果我将"listbox"重命名为"listbox",它在任何浏览器中都不起作用。我想这是因为空白的原因,对吧?html中不允许名字中的空格吗?谢谢你的帮助。
在http://www.w3.org/TR/html401/types.html#type-name阅读规范
ID和NAME令牌必须以字母([a- za -z])开头,后跟任意数量的字母、数字([0-9])、连字符("-")、下划线("_")、冒号(":")和点号("。")。
试试这个HTML。Mozilla Firefox和IE都可以使用它!
<html>
<head>
<title>Name Attribute with Spaces</title>
</head>
<body>
<form method="get"> <!-- no "action", form will post to self -->
<table>
<thead><b>Please provide login details</b></thead>
<tbody>
<tr>
<td>Username:</td>
<td><input type="text" name="user name" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="pass word" /></td>
</tr>
<tr>
<td>List Box:</td>
<td>
<select name="123 list box" size="3">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Login" /></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
HTML没有空格问题的原因是URL Encoding。如果你测试一下上面的表单,你会发现浏览器会自动编码特殊字符,因此空格" "会被转换成"+"(或者,有时是"%20")。
test.html?user+name=ravi&pass+word=canuseeme&123+list+box=2
PHP似乎在这里遇到麻烦的原因(从我模糊的记忆中)是,它试图将请求参数作为易于访问的变量公开给PHP程序员。任何语言中的变量名都不包含空格或以数字开头。
编辑:事实上,如果你使多个选择为你的选择框(只需添加multiple属性在select)的名称需要在"[]"
结束给PHP一个提示,它需要安排一个数组变量!