我需要打印一个包含html格式的错误,我的情况是<strong>
。这是我想产生输出的代码
if (empty($namabelakang)){
$errors[] = "<strong>Nama Belakang</strong> tidak boleh kosong";
}
这是我用来打印的那个:
foreach($errors as $error){
echo clean($error)."<br>";
}
它不是我期望的打印,它打印
<strong>Nama Belakang</strong> tidak boleh kosong
而不是:
[Nama Belakang tidak boleh kosong
[请帮助我如何解决?这是清理函数的代码:
function clean($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
如果要使其打印为实际的HTML,则不应使用htmlspecialchars()
。该函数会将其转换为字符代码,从而阻止其呈现为实际的HTML。
function clean($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$str = "<strong>Nama Belakang</strong> tidak boleh kosong";
echo clean($str);
// prints out "<strong>Nama Belakang</strong> tidak boleh kosong"
您想要的是打印实际的HTML。 htmlspecialchars()
会将字符串中的任何特殊字符转换为其关联的ASCII字符代码。
就安全性而言,在打印HTML时没有太大的风险。可能发生的最坏情况是什么?您可以事先删除脚本标签,这样可以防止任何恶意意图。
foreach($errors as $error){
echo htmlspecialchars($error)."<br>";
}
不要使用清理功能。...
就像回声一样:
foreach($errors as $error){
echo $error . "<br>";
}
不需要其他功能。
当然,您可以像echo trim($error)
一样添加trim(),因此开始和结束处都不会有空格。
[所有其他功能,例如htmlspecialchars
或stripslashes
,都会将您的字符串转换为纯文本,并且不会让您看到html结果:)
function clean($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
$data = str_replace(array("<strong>", "</strong>"), array("<strong>", "</strong>"), $data);
return $data;
}
解决此问题的简便方法是将$error
放在“”中,如下所示:
foreach($errors as $error){
echo "$error <br>";
}