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('&nbsp;&nbsp;', '<br>'), $output);
    return str_replace('&nbsp; ', '&nbsp;&nbsp;', $output);
}
?>