Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: TRANSLIT via iconv
 
 автор: Eugene77   (22.11.2007 в 12:17)   письмо автору
 
 

Кто понимает что здесь написано?


Если добавить //TRANSLIT к параметру out_charset будет включена транслитеризация


Я пишу:

<?php
echo iconv('utf-8''cp1251//TRANSLIT ',  $my_text);

Не работает.
Как правильно?

И второе.
Как перехватить ситуацию, и вывести соответствующее предупреждение,
если исходный текст $my_text содержит символы не переводимые в требуемую кодировку?

   
 
 автор: retsoul   (22.11.2007 в 23:53)   письмо автору
 
   для: Eugene77   (22.11.2007 в 12:17)
 

iconv() - это функция перекодировки
рабочий пример:

<?
$my_text 
"йцуке";
echo 
iconv('cp1251''utf-8'$my_text);
?>


и второе:

<?
$my_text 
"йцуке";
if(!
iconv('utf-8''cp1251'$my_text))
  echo 
"а кодировка строки то не та!";
else
  echo 
iconv('cp1251''utf-8'$my_text);
?>

   
 
 автор: mihdan   (23.11.2007 в 13:31)   письмо автору
 
   для: Eugene77   (22.11.2007 в 12:17)
 

1. Установить локаль для начала:

<?php
setlocale
(LC_CTYPE'POSIX');
?>

, а потом:

<?php
echo iconv('UTF-8''ASCII//TRANSLIT'"&#381;lu&#357;ou&#269;k&#253; k&#367;&#328;\n");
?>

2 Регулярным выражением проверить текст на соответствие

   
 
 автор: Eugene77   (28.11.2007 в 15:55)   письмо автору
 
   для: mihdan   (23.11.2007 в 13:31)
 

Всё это не даёт нормальной транслитерации. Вот примерЫ:
<?php
$my_text = "&#381;lu&#357;ou&#269;k&#253; k&#367;&#328;\n";
setlocale(LC_CTYPE, 'POSIX');
echo iconv('UTF-8', 'windows-1251//TRANSLIT', "&#381;lu&#357;ou&#269;k&#253; k&#367;&#328;\n");
echo "<br>";
echo iconv('utf-8', 'ascii//TRANSLIT', $my_text);
echo "<br>";
echo iconv('UTF-8', 'ASCII//TRANSLIT', "&#381;lu&#357;ou&#269;k&#253; k&#367;&#328;\n");
// &#381;lu&#357;ou&#269;k&#253; k&#367;&#328;
// &#381;lu&#357;ou&#269;k&#253; k&#367;&#328;
// &#381;lu&#357;ou&#269;k&#253; k&#367;&#328;
?>
В ASCII, как известно, таких символов нет, да ивообще везде одно и тоже.

To retsoul:
Меня транситерация интересует.
Будьте добры прочесть название темы!

   
 
 автор: Zirkon   (28.11.2007 в 19:23)   письмо автору
 
   для: Eugene77   (28.11.2007 в 15:55)
 

такое пойдет? только следите за кодировкой :)


    function translit($string){
        $rus = array("/а/", "/б/", "/в/",
 "/г/", "/ґ/", "/д/", "/е/", "/ё/", "/ж/", 
"/з/", "/и/", "/й/", "/к/", "/л/", "/м/", 
"/н/", "/о/", "/п/", "/р/", "/с/", "/т/", 
"/у/", "/ф/", "/х/", "/ц/", "/ч/", "/ш/", 
"/щ/", "/ы/", "/э/", "/ю/", "/я/", "/ь/", 
"/ъ/", "/і/", "/ї/", "/є/", "/А/", "/Б/", 
"/В/", "/Г/", "/ґ/", "/Д/", "/Е/", "/Ё/", 
"/Ж/", "/З/", "/И/", "/Й/", "/К/", "/Л/", 
"/М/", "/Н/", "/О/", "/П/", "/Р/", "/С/", 
"/Т/", "/У/", "/Ф/", "/Х/", "/Ц/", "/Ч/", 
"/Ш/", "/Щ/", "/Ы/", "/Э/", "/Ю/", "/Я/", 
"/Ь/", "/Ъ/", "/І/", "/Ї/", "/Є/");
        $lat = array("a", "b", "v", 
"g", "g", "d", "e", "e", "zh", "z", "i", 
"j", "k", "l", "m", "n", "o", "p", "r", 
"s", "t", "u", "f", "h", "c", "ch", "sh", 
"sh'", "y", "e", "yu", "ya", "'", "'", "i", 
"i", "e",    "A", "B", "V", "G", "G", "D", 
"E", "E", "ZH", "Z", "I", "J", "K", "L", 
"M", "N", "O", "P", "R", "S", "T", "U", 
"F", "H", "C", "CH", "SH", "SH'", "Y", "E", 
"YU", "YA", "'", "'", "I", "I", "E");
        return preg_replace($rus, $lat, $string);
    }

   
 
 автор: Eugene77   (30.11.2007 в 17:37)   письмо автору
 
   для: Zirkon   (28.11.2007 в 19:23)
 

Спасибо за интересную функцию!
Не совсем этого хотелось, но так всё же лучше, чем вообще никак.
Я полагал, что iconv может сразу и кодировку поменять и транслит применить, но
что-то никак не получается её применить.
Придётся на основе вашей функции что-то ещё самому присочинить.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования