我需要打印一个包含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;
}
答案 0 :(得分:1)
如果您希望将其打印为实际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时没有太大的风险。可能发生的最糟糕的事情是什么?您可以事先删除脚本标记,这样可以防止任何恶意攻击。
答案 1 :(得分:0)
foreach($errors as $error){
echo htmlspecialchars($error)."<br>";
}
答案 2 :(得分:0)
不要使用清洁功能......
就像回声一样:
foreach($errors as $error){
echo $error . "<br>";
}
不需要其他功能。
当然你可以像echo trim($error)
一样添加trim(),这样就不会有开头和结尾的空格。
htmlspecialchars
或stripslashes
等所有其他功能会将您的字符串转换为纯文本,并且不会让您显示html结果:)
答案 3 :(得分:0)
function clean($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
$data = str_replace(array("<strong>", "</strong>"), array("<strong>", "</strong>"), $data);
return $data;
}
答案 4 :(得分:0)
解决此问题的简便方法是将$error
放在“”中,如下所示:
foreach($errors as $error){
echo "$error <br>";
}