Я все еще не понимаю, как работает 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 = "&";
Есть два набора различных выходов, которые мне нужно хранить в двух разных столбцах внутри таблицы моей базы данных,
-
Мне нужно преобразовать
Löic & René
вLoic & Rene
для чистых URL-адресов. -
Мне нужно сохранить их как есть -
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 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
Как я могу их выработать?
Спасибо.
EDIT:
Это исходный файл, в котором я тестирую код,
<!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>