如何使用echo作为HTML格式的输出

时间:2014-12-25 11:04:18

标签: php html echo

我需要打印一个包含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;
}

5 个答案:

答案 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 "&lt;strong&gt;Nama Belakang&lt;/strong&gt; tidak boleh kosong"

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

在安全性方面,打印HTML时没有太大的风险。可能发生的最糟糕的事情是什么?您可以事先删除脚本标记,这样可以防止任何恶意攻击。

答案 1 :(得分:0)

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

Documentation

答案 2 :(得分:0)

不要使用清洁功能......

就像回声一样:

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

不需要其他功能。

当然你可以像echo trim($error)一样添加trim(),这样就不会有开头和结尾的空格。

htmlspecialcharsstripslashes等所有其他功能会将您的字符串转换为纯文本,并且不会让您显示html结果:)

答案 3 :(得分: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;
}

答案 4 :(得分:0)

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

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