答案 0 :(得分:2)
我认为您忘记了双引号。试试
<textarea
placeholder="<?php echo htmlentities($comments); ?>"
rows="6"
cols="35"
name="comments"
maxlength="20"
></textarea>
答案 1 :(得分:1)
您应该使用:
placeholder="<?php echo htmlentities($comments); ?>"
如果您的$comments
变量包含空格或引号,则它们将被转义。
您可以查看htmlentities文档here。
答案 2 :(得分:1)
在其他答案中添加一些解释:
placeholder
是一个属性。可以将属性值 取消引用,但如果它包含任何空格,则仅字符串中的第一个单词将被解释为属性值。此后的任何其他单词将被解释为其他属性。如果查看页面源,则会看到整个$comments
字符串都在其中。
<textarea placeholder=word other words></textarea>
查看此处突出显示的语法。请注意,“其他”和“单词”如何像“占位符”一样呈红色?
<textarea placeholder='word other words'></textarea>
<textarea placeholder="word other words"></textarea>
现在它们是价值的一部分。
Either single quotes or double quotes are fine.您只需要一些东西即可将单词分组在一起,以便浏览器不会认为您为其提供了额外的属性。
答案 3 :(得分:0)
问题在于它应该是:
<textarea placeholder="<?php echo $comments; ?>">...
好像有人要我解释。要了解发生了什么,就是要混合两种语言。一层上有HTML。在将其发送到浏览器之前,它已通过PHP处理器发送。处理完此内容后,原始问题看起来像这样,没有引号,并且在浏览器进行解析之前。
<textarea placeholder=word other words>...
浏览器自动引用HTML并将其解释为
<textarea placeholder="word" "other" "words">...
所以这就是为什么您需要在PHP代码周围添加引号。这就是为什么它只显示第一个值的原因。用引号引起来时,浏览器会将字符串中所有间隔的元素都视为占位符的值。
<textarea placeholder="word other words">...
让我知道是否需要进一步澄清,或者是否有更好的解释方式。