2010-01-28 2 views
2

У меня есть строка, которая выглядит примерно так:Не кодирующий уже закодированные элементы с htmlentities

Bürstner    

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

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

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

Могу ли я каким-то недоразумением, как это работает? Желаемый результат состоит в том, чтобы закодировать умляут u, но оставить существующие сущности nbsp в одиночку (это всего лишь пример, Есть очень много объектов в очень длинный документ уже).

** EDIT **

Так как это кажется неясным, оригинальная строка:

Bürstner   

DESIRED ВЫВОД:

Bürstner   

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

+0

H Вы пробовали использовать htmlspecialchars? http://us3.php.net/htmlspecialchars –

+0

htmlspecialchars не кодирует umlauts – Stomped

+0

И вам действительно нужны эти символы для замены? Какую кодировку символов вы используете? – Gumbo

ответ

11

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

$out = htmlentities($string, ENT_NOQUOTES, ini_get('default_charset'), false); 
+0

Ты, сэр, джентльмен и ученый. +1 и принято. – Stomped

4

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

2

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

строка htmlentities (строка $ строковых [, Int $ quote_style = ENT_COMPAT [, строки $ кодировки [, BOOL $ double_encode = истинный]]])

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

2

мне кажется, что вы упускать из виду the third parameter в htmlentities():

строка htmlentities (строка $ строка [, Int $ quote_style = ENT_COMPAT [, строка $ кодировок [, BOOL $ double_encode = истинный]]])

попробовать

$out = htmlentities($string, ENT_NOQUOTES, <whatever encoding you're using>, false); 
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); 
} 
?> 
Смежные вопросы