不使用htmlentities编码已编码的项目

时间:2010-01-28 20:43:18

标签: php html

我有一个看起来像这样的字符串:

Bürstner    

当我在其上使用htmlentities()时,我将double encode param设置为false,但它仍然会将 重新编码为 

我正在用它编码:

$out = htmlentities($string,ENT_NOQUOTES, 0);

我在某种程度上误解了这是如何工作的?所需的输出是对变音符号u进行编码,但仅保留现有的实体(这只是一个例子,很长的文档中已有多个实体)。

**编辑**

由于这似乎不清楚,原始字符串:

Bürstner   

期望的输出:

Bürstner   

现有实体应该独处。

5 个答案:

答案 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]]])

http://www.php.net/manual/en/function.htmlentities.php

答案 3 :(得分:2)

在我看来,你忽略了the third parameterhtmlentities()

  

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