您可以访问此链接以获取我的promlem示例:http://jflaugher.mystudentsite.net/cmweb241/cmweb241_lab2.html
一切正常,除了我在回声中使用htmlspecialchars时遇到问题。我希望实体显示在echo而不是html字符中。我已经尝试将htmlspecialchars放在echo中,但是段落标签会显示出来。如何在echo中使用htmlspecialchar,并在段落标记中显示echo?我已经有一段时间了,并且没有在哪里,因为我对PHP很新。
例如,当我输入'&'时,我得到回应。而不是'&',我希望实体和放大器能够被回应。
<?php
$username = htmlspecialchars(str_replace(array("'", "\""), "", $_POST['username']));
$password = htmlspecialchars(str_replace(array("'", "\""), "", $_POST['password']));
$comment = htmlspecialchars(str_replace(array("'", "\""), "", $_POST['comment']));
echo "<p> Your Username is: $username .</p> ";
echo " <p>Your Password is: $password . </p>";
echo " <p>Your Comment was: $comment . </p>";
?>
答案 0 :(得分:2)
说你输入&
htmlspecialchars
会将其转换为&
&
是&
的HTML实体,因此在浏览器中查看结果会显示&
。
这是htmlspecialchars
的正常目的,它通过适当地为媒体(HTML)转义它来保留可见字符。
如果您希望&
变成可见的&
,则浏览器需要接收&amp;
。应用htmlspecialchars
两次来执行此操作:
htmlspecialchars(htmlspecialchars($_POST['username']))
也许The Great Escapism (Or: What You Need To Know To Work With Text Within Text)可以帮助您更好地理解这个主题。
答案 1 :(得分:1)
我不确定这意味着什么:
我希望实体显示在echo中,而不是html字符。
您是说您希望实体显示在您的网页中? htmlspecialchars 将字符转换为实体,但浏览器会将这些实体显示为它们所代表的字符。
如果您想在浏览器中实际查看实体,可以双重转义值:
$username = htmlspecialchars(htmlspecialchars(str_replace(array("'", "\""), "",
$_POST['username'])));
但我并不认为这是你正在进行的练习的目的。
答案 2 :(得分:1)
如果您想要显示实体,可以应用htmlspecialchars()
两次,它会将&
中的所有&
变为&amp;
,因此实体本身将会显示。
另一种方法是将输出包装在<pre></pre>
标签中。
答案 3 :(得分:0)
尝试这种方法:
<?php
$string = "<tag>&";
$string = htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
print $string;
它将打印:
<tag>&