我正在尝试使用 PHP 中的 echo 命令来回显一行 HTML。这是行:
echo '<tr><td><input type="checkbox" name="' . $currentTeam . '" checked/></td><td><label>' . $currentTeam . '</label></td></tr>';
我将复选框的
name
属性设置为 $currentTeam
。当 $currentTeam
有空格字符并且我尝试检查它是否在提交表单时检查时,它不会注册。当 $currentTeam
没有空格字符并且我选中该框时,我可以在提交表单时查看是否使用 isset()
设置它。这很奇怪,因为相同的 $currentTeam
变量在复选框的 <label>
中打印出来没有问题。我假设这是因为引号和空格字符发生了一些问题。
我尝试过切换单引号和双引号的使用等,但没有成功。有人知道发生了什么事吗?
当您将其作为内容打印在页面中时,
$currentTeam
中的空间是不易察觉的。但是,如果您将其用作元素属性(如 name、id 等),则该值将保持原样,包括尾随空格。
当您将其输出为内容(例如标签文本)时,多个空格将呈现为单个空格,并且该单个空格在您的页面中很可能不会被注意到。
这里举例:
$currentTeam = "team1";
$currentTeam2 = " team2 ";
echo '<tr><td><input type="checkbox" name="' . $currentTeam . '" checked/></td><td><label>' . $currentTeam . '</label></td></tr>';
echo '<tr><td><input type="checkbox" name="' . $currentTeam2 . '" checked/></td><td><label>' . $currentTeam2 . '</label></td></tr>';
您不会注意到页面上的空格,但如果您查看元素,标签有 1 个空格(多个变为单个),并且复选框名称中仍保留空格。
当我发送它时,team2 名称中的空格将保留。未注册的原因:
因此,要解决此问题,您需要先修剪该值,然后再在页面上使用它。
$currentTeam = "team1";
$currentTeam2 = trim(" team2 ");
echo '<tr><td><input type="checkbox" name="' . $currentTeam . '" checked/></td><td><label>' . $currentTeam . '</label></td></tr>';
echo '<tr><td><input type="checkbox" name="' . $currentTeam2 . '" checked/></td><td><label>' . $currentTeam2 . '</label></td></tr>';