我有一个看起来像这样的字符串:
Bürstner
当我在其上使用htmlentities()时,我将double encode
param设置为false,但它仍然会将
重新编码为 
我正在用它编码:
$out = htmlentities($string,ENT_NOQUOTES, 0);
我在某种程度上误解了这是如何工作的?所需的输出是对变音符号u进行编码,但仅保留现有的实体(这只是一个例子,很长的文档中已有多个实体)。
**编辑**
由于这似乎不清楚,原始字符串:
Bürstner
期望的输出:
Bürstner
现有实体应该独处。
答案 0 :(得分:11)
htmlentities
的第三个参数是 charset 参数;第四个参数是 double_encode 参数。所以试试这个:
$out = htmlentities($string, ENT_NOQUOTES, ini_get('default_charset'), false);
答案 1 :(得分:4)
第三个论点是字符集;你需要将第四个而不是第三个设置为假。
答案 2 :(得分:2)
htmlentities的第3个参数是charset ..你需要将4th设置为false
string htmlentities(string $ string [,int $ quote_style = ENT_COMPAT [, string $ charset [,bool $ double_encode = true]]])
答案 3 :(得分:2)
在我看来,你忽略了the third parameter到htmlentities()
:
string htmlentities(string $ string [,int $ quote_style = ENT_COMPAT [,string $ charset [,bool $ double_encode = true]]])
试
$out = htmlentities($string, ENT_NOQUOTES, <whatever encoding you're using>, false);
答案 4 :(得分:0)
看看这个功能
它的链接 http://php.net/manual/de/function.htmlspecialchars.php
<?php
function special_formatting($input) {
$output = htmlspecialchars($input, ENT_QUOTES);
$output = str_replace(array(' ', "\n"), array(' ', '<br>'), $output);
return str_replace(' ', ' ', $output);
}
?>