在 Qt5 中,它是QString::toHtmlEscaped
,例如:
QString a = "Hello, <span class=\"name\">Bear</span>!";
// a will contain: Hello, <span class="name">Bear</span>!
QString b = a.toHtmlEscaped();
// b will contain: Hello, <span class="name">Bear</span>!
这直接相当于htmlspecialchars
PHP 中的。它取代了 Qt::escape
功能(由 Amartel提到),它做同样的事情,但现在已经过时了。
该Qt::convertFromPlainText
函数(也被 Amartel 提到)仍然存在于 Qt 5 中,但它比 PHP 的htmlspecialchars
. 它不仅替换<
了 with <
、>
with >
、&
with &
、"
with ,"
而且还对空白字符(空格、制表符、换行符等)进行了额外处理,以使生成的 HTML 在视觉上看起来与原始纯文本相似。特别是,它可以将<p>…</p>
/<br>
用于换行,将不间断空格用于空格,将多个不间断空格用于制表符。即这个功能不仅仅是htmlspecialchars
,它比nl2br(htmlspecialchars($s))
组合更全面。
请注意,与 PHP 的htmlspecialchars
with不同ENT_QUOTES
,此答案中列出的 Qt 函数都没有将单引号 ( '
)替换为'
/ '
。因此,例如,QString html = "<img alt='" + s.toHtmlEscaped() + "'>";
不会安全,只会安全QString html = "<img alt=\"" + s.toHtmlEscaped() + "\">";
。(但是, as<
被替换并且'
在外面没有特殊含义<…>
,类似的东西QString html = "<b>" + s.toHtmlEscaped() + "</b>";
也是安全的。)