Intereting Posts
как запустить php-код на кнопку отправки без обновления / перезагрузки страницы Удалите PHP полностью из Ubuntu Онлайн-игры или что-то быстрее, чем ajax для отправки / получения данных Как узнать все токены устройств для отправки push-уведомления (APNS) в цикле? Обнаружение неалфавитной языковой строки в PHP PHP – вход в скрипт, не создающий сеансы PHP – правильная проверка, если отправлен $ _POST Эхо значения нескольких пользовательских данных Перенос хэш из php's crypt () в python Как кодировать URL-адрес с помощью php-подобных браузеров php – динамическое обновление значения Singleton class Кодировка: все UTF-8, но вывод DB отображается неправильно. Есть идеи? Удалить знак пунктуации с регулярным выражением? Как я могу легко объединить два документа XML с одним и тем же родительским узлом в один документ? Не найдено ни одного результата для запроса, хотя ожидалась хотя бы одна строка

PHP: обработка специальных символов с помощью iconv

Я до сих пор не понимаю, как работает iconv .

Например,

 $string = "Löic & René"; $output = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $string); 

Я получил,

Обратите внимание: iconv () [function.iconv]: обнаружен незаконный символ в строке ввода в …

$string = "Löic"; или $string = "René";

Я получил,

Примечание: iconv() [function.iconv]: обнаружен неполный многобайтовый символ в строке ввода.

Я ничего не получаю с помощью $string = "&";

Есть два набора различных выходов, которые мне нужны, чтобы хранить их в двух разных столбцах внутри таблицы моей базы данных,

  1. Мне нужно преобразовать Löic & René в Löic & René Loic & Rene для чистых URL- Löic & René .

  2. Мне нужно держать их такими, какие они есть – Löic & René как Löic & René затем конвертировать их только с htmlentities($string, ENT_QUOTES); при отображении их на моей странице html.

Я попытался с некоторыми предложениями в php.net ниже, но все равно не работает,

У меня была ситуация, когда мне нужны были какие-то символы, транслитерированные, но остальные игнорировались (для странных диакритик, таких как айн или хамза). Добавление // TRANSLIT // IGNORE, похоже, сделал трюк для меня. Он транслитерирует все, что может быть транслитерировано, но затем выбрасывает материал, которого не может быть.

Так:

 $string = "ʿABBĀSĀBĀD"; echo iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $string); // output: [nothing, and you get a notice] echo iconv('UTF-8', 'ISO-8859-1//IGNORE', $string); // output: ABBSBD echo iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $string); // output: ABBASABAD // Yay! That's what I wanted! 

и другой,

 Andries Seutens 07-Nov-2009 07:38 When doing transliteration, you have to make sure that your LC_COLLATE is properly set, otherwise the default POSIX will be used. To transform "rené" into "rene" we could use the following code snippet: setlocale(LC_CTYPE, 'nl_BE.utf8'); $string = 'rené'; $string = iconv('UTF-8', 'ASCII//TRANSLIT', $string); echo $string; // outputs rene 

Как я могу их выработать?

Благодарю.

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

Это исходный файл, в котором я тестирую код,

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" class="no-js"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <?php $string = "Löic & René"; $output = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $string); ?> </html> 

И сохранили ли вы исходный файл в кодировке UTF-8? Если нет (и, я думаю, вы этого не сделали, так как это приведет к ошибке «неполного многобайтового символа»), попробуйте сначала.

 $clean = iconv('UTF-8', 'ASCII//TRANSLIT', utf8_encode($s));