input.value没有获取/设置完整字符串

时间:2017-05-02 08:56:31

标签: php

我很难将整个字符串作为输入标记的值

到目前为止这是我的代码,但我不确定它有什么问题

$message = "You have completed {$offername} [{$offerprovider}] and received {$offerpayout}";
echo "<input id='message' style='display: none;' value={$message}>$message</div>";

但是当我检查javascript或其他内容的值时,只输出第一个单词You任何帮助都会受到赞赏,因为我被卡住了

2 个答案:

答案 0 :(得分:2)

您的代码中至少存在两个问题:

echo "<input id='message' style='display: none;' value={$message}>$message</div>";

上面一行生成的HTML如下所示:

<input id='message' style='display: none;' value=You have completed ...>

HTML属性值的值没有引号。虽然如果属性值是单个单词,则引号是可选的,但当属性的值包含许多单词时,它们是必需的;否则属性“value”的值为Youhavecompleted等是input元素的其他HTML属性。

代码的第二个问题来自于你在没有正确编码HTML特殊字符的情况下放置一些文本的事实。例如,如果$offername的值为O'Brian,则生成的HTML代码(正确引用"value" HTML属性的值之后)将变为:

<input id='message' style='display: none;' value='You have completed O'Brian [...] and received ...'>

它仍然无效。使用PHP函数htmlspecialchars()正确编码HTML特殊字符,以便在最终的HTML页面中获取它们的文字值。

另一个小通知(不是节目限制)是引用字符。最好使用引号(")来引用HTML中的属性值。允许使用撇号(')但不推荐使用。

总而言之,编写代码的更好方法是:

$message = "You have completed {$offername} [{$offerprovider}] and received {$offerpayout}";

$encodedMsg = htmlspecialchars($message);
printf('<input id="message" style="display: none;" value="%s">%s</div>',
    $encodedMsg, $encodedMsg);

请记住,您在HTML中放置的所有内容都应该正确编码,否则浏览器可能会以与您预期不同的方式纠正和解释它。

答案 1 :(得分:0)

试试这个

echo "<input id='message' style='display: none;' value='{$message}'>$message</div>";

属性值必须用单引号或双引号括起来,否则会用空格分割文本。它会像这样打印出来。

<input id="message" style="display: none;" value="You" have="" completed="" and="" received="">