【问题标题】:htmlspecialchars removes formattinghtmlspecialchars 删除格式
【发布时间】:2010-07-23 11:07:16
【问题描述】:

我在一个类的另一个函数中调用 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,它会起作用,但再次使用它,它会删除格式。为什么会这样?

【问题讨论】:

  • 请提供一些输入数据样本。
  • 您的$row['cQuotes']$row['vAuthor'] 变量中是否有HTML?
  • 不应该是这样吗?
  • 另外,函数h需要返回数据,而不是回显它
  • 它不读取 html,忽略 &lt;p&gt; 和我所做的所有 css 格式。它只是在一行中显示数据,没有任何间距。

标签: php htmlspecialchars


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 不使用面向对象的方法,函数 htmlspecialchars 工作并显示所有 css 格式。但是使用类,它不起作用。
    猜你喜欢
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2021-03-04
    相关资源
    最近更新 更多