我想转换所有内容,例如空格,单/双引号,换行符等。
以下是一个示例输入(感谢som_nangia):
Escape Check < "escape these" > <“and these”> <html><tr><td></td></tr></html> 'these will need escaping too' ‘ so will these’ <script> </script>
以下是我正在考虑的选项:
<pre>Escape Check < "escape these" > <“and these”> <html><tr><td></td></tr></html> 'these will need escaping too' ‘ so will these’ <script> </script></pre>
/**
* Encoding html special characters, including nl2br
* @param string $original
* @return string
*/
function encode_html_sp_chars($original) {
$table = get_html_translation_table(HTML_ENTITIES);
$table[' '] = ' ';
$encoded = strtr($original, $table);
return nl2br($encoded);
}
我尝试了htmlspecialchars和htmlentities,但没有一个编码空格。
答案 0 :(得分:5)
htmlspecialchars
。echo htmlspecialchars($string);
在您的情况下,请以这种方式传递两个参数:
echo htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
某些字符在HTML中具有特殊意义,如果要保留其含义,则应由HTML实体表示。此函数返回一个包含这些转换的字符串。如果您需要翻译具有关联命名实体的所有输入子字符串,请改用htmlentities()。
如果传递给此函数的输入字符串与最终文档共享相同的字符集,则此函数足以准备输入以包含在HTML文档的大多数上下文中。但是,如果输入可以表示未在最终文档字符集中编码的字符,并且您希望保留这些字符(作为数字或命名实体),则此函数和htmlentities()(仅编码具有命名实体的子字符串)等价物)可能不足。您可能必须改为使用mb_encode_numericentity()。
答案 1 :(得分:0)
这种最好的方式可能是
实施例:
function encode_html_sp_chars($original) {
$encoded = htmlentities($original, ENT_QUOTES, "UTF-8");
$encoded = str_replace(' ', ' ', $encoded);
return nl2br($encoded);
}