如何将echo用作HTML格式的输出

问题描述 投票:0回答:5

我需要打印一个包含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;
}
php html echo
5个回答
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 "&lt;strong&gt;Nama Belakang&lt;/strong&gt; tidak boleh kosong"

您想要的是打印实际的HTML。 htmlspecialchars()会将字符串中的任何特殊字符转换为其关联的ASCII字符代码。

就安全性而言,在打印HTML时没有太大的风险。可能发生的最坏情况是什么?您可以事先删除脚本标签,这样可以防止任何恶意意图。


0
投票
foreach($errors as $error){
        echo htmlspecialchars($error)."<br>";
    }

Documentation


0
投票

不要使用清理功能。...

就像回声一样:

foreach($errors as $error){
    echo $error . "<br>";
}

不需要其他功能。

当然,您可以像echo trim($error)一样添加trim(),因此开始和结束处都不会有空格。

[所有其他功能,例如htmlspecialcharsstripslashes,都会将您的字符串转换为纯文本,并且不会让您看到html结果:)


0
投票
   function clean($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    $data = str_replace(array("&lt;strong&gt;", "&lt;/strong&gt;"), array("<strong>", "</strong>"), $data);
    return $data;
}

0
投票

解决此问题的简便方法是将$error放在“”中,如下所示:

foreach($errors as $error){
    echo "$error <br>";
}
© www.soinside.com 2019 - 2024. All rights reserved.