1

我在一个类的另一个函数中调用 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'] 和 Author 变量中没有 html。它是在实现 htmlspecialchars 时删除的 css 格式。

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

4

2 回答 2

1

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

  • '&'(和号)变为 '&'
  • 当 ENT_NOQUOTES 未设置时,'"'(双引号)变为 '"'。
  • ''' (单引号)仅在设置了 ENT_QUOTES 时才变为 '''。
  • '<' (小于)变为 '<'
  • '>' (大于)变成 '>'

(取自这里: http: //php.net/manual/en/function.htmlspecialchars.php

当然,任何格式都不会生效。这就是 htmlspecialchars() 的意义所在。

于 2010-07-23T11:10:49.987 回答
1

问题可能是该函数h()需要返回数据而不是回显它(基于您使用结果的方式h()

于 2010-07-23T11:35:03.170 回答