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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Попытка транслитерации

Сообщения:  [1-9] 

 
 автор: trotsak   (05.05.2009 в 12:24)   письмо автору
 
   для: kamat0z   (05.05.2009 в 11:52)
 

Работает!

function encodestring($str)  
{  
$arr = array(   
'а' => 'a',  
'б' => 'b',  
'в' => 'v',  
'г' => 'g',  
'д' => 'd',  
'е' => 'e',  
'ё' => 'jo',  
'ж' => 'zh',  
'з' => 'z',  
'и' => 'i',  
'й' => 'jj',  
'к' => 'k',  
'л' => 'l',  
'м' => 'm',  
'н' => 'n',  
'о' => 'o',  
'п' => 'p',  
'р' => 'r',  
'с' => 's',  
'т' => 't',  
'у' => 'u',  
'ф' => 'f',  
'х' => 'kh',  
'ц' => 'c',  
'ч' => 'ch',  
'ш' => 'sh',  
'щ' => 'shh',  
'ъ' => '9',  
'ы' => 'y',  
'ь' => '6',  
'э' => 'eh',  
'ю' => 'ju',  
'я' => 'ja',
'А' => 'A',
                                'Б' => 'B',
                                'В' => 'V',
                                'Г' => 'G',
                                'Д' => 'D',
                                'Е' => 'E',
                                'Ё' => 'Yo',
                                'Ж' => 'G',
                                'З' => 'Z',
                                'И' => 'I',
                                'Й' => 'Y',
                                'К' => 'K',
                                'Л' => 'L',
                                'М' => 'M',
                                'Н' => 'N',
                                'О' => 'O',
                                'П' => 'P',
                                'Р' => 'R',
                                'С' => 'S',
                                'Т' => 'T',
                                'У' => 'U',
                                'Ф' => 'F',
                                'Х' => 'H',
                                'Ц' => 'Ts',
                                'Ч' => 'Ch',
                                'Ш' => 'Sh',
                                'Щ' => 'Shch',
                                'Ъ' => '',
                                'Ы' => 'I',
                                'Ь' => '',
                                'Э' => 'E',
                                'Ю' => 'Yu',
                                'Я' => 'Ya'
 
);  
$key = array_keys($arr); 
$val = array_values($arr); 
$trans = str_replace($key,$val,$str); 
    return $trans;  
}

  Ответить  
 
 автор: trotsak   (05.05.2009 в 12:08)   письмо автору
 
   для: Николай2357   (05.05.2009 в 11:47)
 

Всем большое спасибо.
Разобрался.
Проблема в кодировке. http://forum.dklab.ru/viewtopic.php?t=30401&postdays=0&postorder=asc&highlight=

  Ответить  
 
 автор: kamat0z   (05.05.2009 в 11:52)   письмо автору
 
   для: trotsak   (05.05.2009 в 10:53)
 


function encodestring($st)
  {
    // Сначала заменяем "односимвольные" фонемы.

    $st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
    "abvgdeeziyklmnoprstufh'iei");

    $st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
    "ABVGDEEZIYKLMNOPRSTUFH'IEI");
    // Затем - "многосимвольные".
    $st=strtr($st, 
                    array(
                        "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", 
                        "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
                        "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH", 
                        "Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
                        "ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
                        )
             );
    // Возвращаем результат.
    return $st;
  }

echo $fname = encodestring($_POST['fname']);


должно вывести транслиретированное слово

  Ответить  
 
 автор: Николай2357   (05.05.2009 в 11:47)   письмо автору
 
   для: trotsak   (05.05.2009 в 10:53)
 

Эта функция не будет работать под utf-8. Вот эта гораздо проще и надежнее:
<?php
function encodestring($str

$arr = array(  
'а' => 'a'
'б' => 'b'
'в' => 'v'
'г' => 'g'
'д' => 'd'
'е' => 'e'
'ё' => 'jo'
'ж' => 'zh'
'з' => 'z'
'и' => 'i'
'й' => 'jj'
'к' => 'k'
'л' => 'l'
'м' => 'm'
'н' => 'n'
'о' => 'o'
'п' => 'p'
'р' => 'r'
'с' => 's'
'т' => 't'
'у' => 'u'
'ф' => 'f'
'х' => 'kh'
'ц' => 'c'
'ч' => 'ch'
'ш' => 'sh'
'щ' => 'shh'
'ъ' => '"'
'ы' => 'y'
'ь' => '\''
'э' => 'eh'
'ю' => 'ju'
'я' => 'ja'
); 
$key array_keys($arr);
$val array_values($arr);
$trans str_replace($key,$val,$str);
    return 
$trans
}
Только массив нужно дописать верхним регистром.

  Ответить  
 
 автор: trotsak   (05.05.2009 в 10:53)   письмо автору
 
   для: trotsak   (05.05.2009 в 09:35)
 

Вроде бы откорректировал, но результат тот же.

function encodestring($st)
  {
    // Сначала заменяем "односимвольные" фонемы.
    $st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
    "abvgdeeziyklmnoprstufh'iei");
    $st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
    "ABVGDEEZIYKLMNOPRSTUFH'IEI");
    // Затем - "многосимвольные".
    $st=strtr($st, 
                    array(
                        "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", 
                        "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
                        "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH", 
                        "Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
                        "ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
                        )
             );
    // Возвращаем результат.
    return $st;
  }
  
$fname = encodestring($_POST['fname']);

  Ответить  
 
 автор: trotsak   (05.05.2009 в 09:35)   письмо автору
 
   для: kamat0z   (05.05.2009 в 08:31)
 

Спасибо. Мысль понял. Откорректирую.

  Ответить  
 
 автор: kamat0z   (05.05.2009 в 08:31)   письмо автору
 
   для: DEM   (05.05.2009 в 08:25)
 

Простите, а где вы вызываете функцию encodestring?

  Ответить  
 
 автор: DEM   (05.05.2009 в 08:25)   письмо автору
 
   для: trotsak   (05.05.2009 в 08:05)
 

Может я просто что-то не заметил, но... ГДЕ вы тут обрабатываете имя функцией? Я заметил тут только функцию и сразу занесение в БД, без обработки чего-либо функцией.

  Ответить  
 
 автор: trotsak   (05.05.2009 в 08:05)   письмо автору
 
 

Пробую транслитерировать кириллицу в латиницу (имя для примера ), но в базу по прежнему заносится кириллица.

if (!empty($_POST['fname']) && $_POST['hobbies']!=' ' && $_POST['pr']='3' && !empty($_POST['hobbies']) && !empty($_FILES['foto_upload']['tmp_name']) )
 {

 include ("../block/grafi.php");
 include ("../block/bd.php");

 function encodestring($fname)
  {
    // Сначала заменяем "односимвольные" фонемы.
    $fname=strtr($fname,"абвгдеёзийклмнопрстуфхъыэ_",
    "abvgdeeziyklmnoprstufh'iei");
    $fname=strtr($fname,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
    "ABVGDEEZIYKLMNOPRSTUFH'IEI");
    // Затем - "многосимвольные".
    $fname=strtr($fname, 
                    array(
                        "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", 
                        "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
                        "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH", 
                        "Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
                        "ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
                        )
             );
    // Возвращаем результат.
    return $fname;
  }


 $result_sum = mysql_query ("SELECT sum FROM comments_setting",$db);
 $myrow_sum = mysql_fetch_array($result_sum);

$result = mysql_query ("INSERT INTO `brides_data` 
(`fname`, `sname`, `birth_d`, `birth_month`, `birth_yr`, 
`country`, `town`, `sex`, `length`, `weight`, `alkogol`, `fuma`, 
`marital_status`, `children`, `education`, `sfera_deeds`, `foreign_lang`, 
`foreig_lang_level`, `hobbies`, `charakter`, `selfpresentation`, `email`, 
`password`, `img_url`) VALUES ('$fname', '$sname', '$birth_d', 
'$birth_month', '$birth_yr', '$country', 
'$town', '$sex', '$length', '$weight', '$alkogol', '$fuma', 
'$marital_status', '$children', '$education', '$sfera_deeds', 
'$foreign_lang', '$foreig_lang_level', '$hobbies', '$charakter', 
'$selfpresentation', '$email', '$password', '$img_url');");



Спасибо за ответы.

  Ответить  

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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