PHP的空白问题

时间:2012-06-09 16:10:30

标签: php fieldset removing-whitespace

我接受来自另一个.php文件的预设输入

$Instructor=$_POST["Instructor"];

当我echo $Instructor时,OUTPUT为Dr. Doom(这是正确的)

当我通过一个字段集时,我只得到(Dr.)而不是(Doom)。我需要通过整个名称。任何人都可以帮忙。我是PHP的新手,所以请尝试以简单的形式解释。非常感谢你提前。 这是我正在使用的代码。

echo "<fieldset> 
 <Legend> Contact Information </Legend>
 PROFESSOR: <inputname='Professor' type= 'text' value=$Instructor maxlength='35' 
            disabled='disabled'> </fieldset>"

3 个答案:

答案 0 :(得分:3)

你知道你在HTML属性上省略了引号,只有第一个空格的字符才能在你的html中被解释。引用该属性,并使用ENT_QUOTES选项htmlentities()使用{{3}}正确转义该属性:

echo "<fieldset ... ... value='" . htmlentities($Instructor, ENT_QUOTES) . "' ... </fieldset>";

请注意,如果没有转义,除了可能破坏输出标记之外,它还容易受到跨站点脚本的攻击。<​​/ p>

答案 1 :(得分:1)

您需要在包含空格的属性值周围加上引号。在您的情况下,他们需要进行转义,因为PHP字符串文字也使用它们:

echo "... value=\"$Instructor\" ...";

答案 2 :(得分:1)

除了可变消毒之外,你忘了引用它:

value=$Instructor

请注意这里的空间:

type= 'text'

顺便说一句,如果你想使用HTML文本块,那么在PHP中有一个很好的语法叫做“heredoc”。

$str = <<<EOF
<fieldset> 
 <Legend> Contact Information </Legend>
 PROFESSOR: <inputname='Professor' type='text' value='$Instructor' maxlength='35' disabled='disabled'>
</fieldset>
EOF;

有什么好处的是文本可以保持人类可读性,并且仍然支持内联变量插值(将“$ something like this”)