我很难将整个字符串作为输入标记的值
到目前为止这是我的代码,但我不确定它有什么问题
$message = "You have completed {$offername} [{$offerprovider}] and received {$offerpayout}";
echo "<input id='message' style='display: none;' value={$message}>$message</div>";
但是当我检查javascript或其他内容的值时,只输出第一个单词You
任何帮助都会受到赞赏,因为我被卡住了
答案 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”的值为You
,have
,completed
等是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="">