为什么空格字符会导致连接问题?

问题描述 投票:0回答:1

我正在尝试使用 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>
中打印出来没有问题。我假设这是因为引号和空格字符发生了一些问题。

我尝试过切换单引号和双引号的使用等,但没有成功。有人知道发生了什么事吗?

php html echo
1个回答
0
投票

当您将其作为内容打印在页面中时,

$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>';

enter image description here

您不会注意到页面上的空格,但如果您查看元素,标签有 1 个空格(多个变为单个),并且复选框名称中仍保留空格。

当我发送它时,team2 名称中的空格将保留。未注册的原因: enter image description here

因此,要解决此问题,您需要先修剪该值,然后再在页面上使用它。

        $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>';

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.