TextArea中的占位符文本无法正确显示

时间:2019-02-08 23:46:37

标签: php html

当我用php变量设置textarea的占位符时,它的空格被切断了。

enter image description here

4 个答案:

答案 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">...

让我知道是否需要进一步澄清,或者是否有更好的解释方式。