Не кодирует уже закодированные элементы с htmlentities - PullRequest
2 голосов
/ 28 января 2010

У меня есть строка, которая выглядит примерно так:

Bürstner    

Когда я использую htmlentities (), я устанавливаю для параметра double encode значение false, но он все равно заканчивается перекодированием   в  

Я использую это для кодирования:

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

Я как-то неправильно понимаю, как это работает? Желаемым результатом является кодирование umlaut u, но оставление существующих сущностей nbsp в покое (это только пример, МНОЖЕСТВО сущностей в очень длинном документе уже).

** РЕДАКТИРОВАТЬ **

Поскольку это кажется неясным, ОРИГИНАЛЬНАЯ СТРОКА:

Bürstner   

желаемый выход:

Bürstner   

Существующие сущности следует оставить в покое.

Ответы [ 5 ]

11 голосов
/ 28 января 2010

Третий параметр htmlentities является параметром charset ; четвертый параметр - это параметр double_encode . Итак, попробуйте это:

$out = htmlentities($string, ENT_NOQUOTES, ini_get('default_charset'), false);
4 голосов
/ 28 января 2010

Третий аргумент - кодировка; вам нужно установить четвертое, а не третье, в false.

2 голосов
/ 28 января 2010

Мне кажется, что вы пропустили третий параметр до htmlentities():

строка htmlentities (строка $ string [, int $ quote_style = ENT_COMPAT [, строка $ charset [, bool $ double_encode = true]]])

1012 * попробовать *

$out = htmlentities($string, ENT_NOQUOTES, <whatever encoding you're using>, false);
2 голосов
/ 28 января 2010

3-й параметр htmlentities - это кодировка .. вам нужно установить 4-е в false

строка htmlentities (строка $ строка [, int $ quote_style = ENT_COMPAT [, строка $ charset [, bool $ double_encode = true]]])

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

0 голосов
/ 28 января 2010

Посмотрите на эту функцию

Ссылка на него 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);
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...