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
. 、、 、、 を置き換える<
だけでなく、空白文字 (スペース、タブ、改行など) を追加処理して、生成された 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() + "\">";
です。(ただし、<
は置き換えられ、'
の外では特別な意味がないので、 の<…>
ようなものでQString html = "<b>" + s.toHtmlEscaped() + "</b>";
も安全です。)