Php htmlspecialchars删除格式设置

Php htmlspecialchars删除格式设置,php,htmlspecialchars,Php,Htmlspecialchars,我在类中的另一个函数中调用htmlspecialchars函数,但是当我这样做时,即使数据显示,它也会删除在一行中显示数据的所有格式 代码如下: class Name { . .. . public function h($s) { echo htmlspecialchars($s, ENT_QUOTES); } public function formatQuotes($row) { return "<p id=\"

我在类中的另一个函数中调用htmlspecialchars函数,但是当我这样做时,即使数据显示,它也会删除在一行中显示数据的所有格式

代码如下:

class Name {
    . .. .
    public function h($s) 
    {
    echo htmlspecialchars($s, ENT_QUOTES);
     }

    public function formatQuotes($row)
    {

    return "<p id=\"ab_quotes\">" . this->h($row['cQuotes']) . "</p>"
    . "<p id=\"ab_author\">" . this->h($row['vAuthor']) . "</p>";             
    }

}
$row['cQuotes']和Author变量中没有html。实现htmlspecialchars时会删除css格式


我注意到的另一件事是,如果我删除了
entu QUOTES
,它会工作,但再次使用它,它会删除格式。为什么会这样?

格式化是什么意思?如果您指的是HTML代码,则htmlspecialchars将用实体替换这些对HTML至关重要的字符:

  • “&”(与号)变为“&”
  • 未设置ENT_NOQUOTES时,“”(双引号)变为“”
  • 只有在设置ENT_QUOTES时,''(单引号)才会变为''''
  • ''(大于)变成'>'
(摘自此处:)


当然,所有的格式都不会起作用。这就是htmlspecialchars()的要点。

问题可能是函数
h()
需要返回数据,而不是回显数据(取决于您如何使用
h()
的结果)

请提供一些输入数据的示例。您的
$row['cQuotes']
$row['vauther']
变量?这不是应该发生的方式吗?另外,函数h需要返回数据,而不是回显它不读取html,忽略
和我所做的所有css格式。它只在一行中显示数据,没有任何间距。在不使用面向对象方法的情况下,函数htmlspecialchars可以工作,并显示所有css格式。但是使用类,它不起作用。
p#ab_quotes{
    font-size: 22px;
    word-wrap: break-word;
    position: absolute;
    top: 80px;
    left: 5px;
    padding: 8px 6px;
    }

p#ab_author {
    font-size: 15px;
        position: absolute;
    top: 200px;
    right: 5px;
    padding: 8px 6px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #EB3B55;
    }