Php 未使用htmlentities对已编码的项进行编码
我有一个字符串,看起来像这样:Php 未使用htmlentities对已编码的项进行编码,php,html,Php,Html,我有一个字符串,看起来像这样: Bürstner 当我在其上使用htmlentities()时,我将double encode参数设置为false,但它仍然会将重新编码为&;nbsp 我用这个来编码: $out = htmlentities($string,ENT_NOQUOTES, 0); 我是不是误解了这是怎么回事?所需的输出是对umlaut u进行编码,但不考虑现有的nbsp实体(这只是一个示例,一个很长的文档中已经有许多实体) **编
Bürstner
当我在其上使用htmlentities()时,我将double encode
参数设置为false,但它仍然会将
重新编码为&;nbsp代码>
我用这个来编码:
$out = htmlentities($string,ENT_NOQUOTES, 0);
我是不是误解了这是怎么回事?所需的输出是对umlaut u进行编码,但不考虑现有的nbsp实体(这只是一个示例,一个很长的文档中已经有许多实体)
**编辑**
由于这似乎不清楚,原始字符串:
Bürstner
期望输出:
Bü;rstner
现有的实体应该保持独立。的第三个参数是charset参数;第四个参数是双_编码参数。所以试试这个:
$out = htmlentities($string, ENT_NOQUOTES, ini_get('default_charset'), false);
第三个参数是字符集;您需要将第四个参数(而不是第三个)设置为false。htmlentities的第三个参数是字符集。。您需要将第4个设置为false
字符串属性(字符串$string)
[,int$quote\u style=ENT\u COMPAT[,,
字符串$charset[,bool
$double_encode=true]])
在我看来,您似乎忽略了htmlentities()
:
字符串htmlentities(字符串$string[,int$quote_style=ENT_COMPAT[,字符串$charset[,bool$double_encode=true]]))
试一试
看看这个函数
它的链接
您是否尝试过使用htmlspecialchars?htmlspecialchars不编码UMLAuts,您确实需要替换这些字符?您使用什么字符编码?
$out = htmlentities($string, ENT_NOQUOTES, <whatever encoding you're using>, false);
<?php
function special_formatting($input) {
$output = htmlspecialchars($input, ENT_QUOTES);
$output = str_replace(array(' ', "\n"), array(' ', '<br>'), $output);
return str_replace(' ', ' ', $output);
}
?>