htmlspecialchars删除格式

时间:2010-07-23 11:07:16

标签: php htmlspecialchars

我在类中的另一个函数内调用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>";             
    }

}

如果我删除对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;
    }

$ row ['cQuotes']和作者变量中没有html。它是在实现htmlspecialchars时删除的css格式。

另一件事,我注意到如果我删除ENT_QUOTES,它可以工作,但再次使用它,它会删除格式。为什么会这样呢?

2 个答案:

答案 0 :(得分:1)

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

  • '&安培;' (&符号)变成'&amp;'
  • '''(双引号)在未设置ENT_NOQUOTES时变为'“'。
  • '''(单引号)仅在设置ENT_QUOTES时变为'''。
  • '&LT;' (小于)成为'&lt;'
  • '&GT;' (大于)变为'&gt;'

(取自此处:http://php.net/manual/en/function.htmlspecialchars.php

当然,没有任何格式化会产生影响。这就是htmlspecialchars()的重点。

答案 1 :(得分:1)

问题可能是函数h()需要返回数据而不是回显它(基于你如何使用h()的结果)