Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не перекодирует во транслит все символы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
energ
Отправлено: 10 Августа, 2011 - 23:42:44
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




делал скрит который создает строчки с транс литом из русской кириллицы

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. function translitIt($str) //функция обращения
  4. {      
  5.     $tr = array(
  6.         "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
  7.         "Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I",
  8.         "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
  9.         "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
  10.         "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
  11.         "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
  12.         "Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
  13.         "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
  14.         "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
  15.         "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
  16.         "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
  17.         "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
  18.         "ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
  19.         " "=>"_","/"=>"_","\\"=>"_","."=>"_",","=>"_","&"=>"_"
  20.     );
  21.        
  22.     return strtr($str,$tr);
  23. }
  24.  
  25.  
  26.  
  27. $namedir= $_POST['namedir']; //папка для файлов
  28. $inter= $_POST['inter']; //количество файлов
  29.  
  30. $key=file("files/key.txt"); //берем строки
  31.  
  32.  
  33. mkdir($namedir); //создаем папку
  34.  
  35. for ($i=0;$i<$inter-1;$i++){ // делаем цыкл по созданию файлов (тут и та все понятно)
  36.         $enkey[$i]= trim(translitIt($key[$i])); // вот тут мы ка к раз и делаем комвер кирилицы в транслит и удаление провелов
  37.         fopen($namedir.'/'.$enkey[$i].'.php','w+'); //создаем файлы
  38. }      
  39.        
  40.  
  41.  


Здесь все расписано и в принципе приделано понятно, так вот при создании файлов не все файлы создаются на транслите, т.е. по факту не все строки переводятся из киры в транс, так в чем проблема? побывал с кодировкой и другими функциями отрабатываться не помогло..
 
 Top
OrmaJever
Отправлено: 11 Августа, 2011 - 00:05:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




всётаки дело имено в кодировке, название файла и буквы в масиве в разных кодировках и для програмы это абсолютно разные символы. Вот у меня есть небольшая функция
PHP:
скопировать код в буфер обмена
  1. function char($str)
  2. {
  3.         $returnstr='char(';
  4.         for($i=0;$i<256;$i++)
  5.         {
  6.                 $arr[chr($i)]=$i;
  7.         }
  8.         for($i=0;$i<strlen($str);$i++)
  9.         {
  10.                 $i!=(strlen($str)-1) ? $returnstr .= $arr[substr($str,$i,1)].',' : $returnstr .= $arr[substr($str,$i,1)];
  11.         }
  12.         $returnstr .= ')';
  13.         return $returnstr;
  14. }

с помощью неё можно проверить одинаковые ли символы в строке и масиве


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
energ
Отправлено: 11 Августа, 2011 - 01:16:02
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




OrmaJever пишет:
echo char('a');
echo char('а');


Есть идеи как все это применить в сведение всего к одному формату и последующему конверту в латиницу? чет уже сонный сижу не как все воедино не соберется))
(Добавление)
OrmaJever

слуш не подскажешь какая функция может перевести строку из вида "запрос" в вид "%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81" ?
 
 Top
Viper
Отправлено: 11 Августа, 2011 - 07:27:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




energ пишет:
слуш не подскажешь какая функция может перевести строку из вида "запрос" в вид "%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81" ?
вообще это браузер делает. Но не все.
Функция rawurlencode


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
energ
Отправлено: 11 Августа, 2011 - 17:41:15
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




energ пишет:
OrmaJever пишет:
echo char('a');
echo char('а');


Есть идеи как все это применить в сведение всего к одному формату и последующему конверту в латиницу? чет уже сонный сижу не как все воедино не соберется))
(Добавление)
OrmaJever

слуш не подскажешь какая функция может перевести строку из вида "запрос" в вид "%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81" ?


покопалсь я инете и нашел функцию которая должна переводить стрку вида "новые машины посмотреть" в "novie_mashini_posmotreti"

PHP:
скопировать код в буфер обмена
  1.  
  2. function rus2lat($text) {
  3.         $text = substr($text, 0, 250); //обрезаем текст до приличных размеров(для URL)
  4.         $rus = array('ё','й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в', 'а','п','р','о','л','д','ж','э', 'я','ч','с','м','и','т','ь','б','ю', ' '); //задаем массив русских букв
  5.         $eng = array('yo','y','c','u','k','e','n','g','sh','sch','z','h','_','f','i','v', 'a','p','r','o','l','d','zh','e', 'ya','ch','s','m','i','t','_','b','yu', '_'); //соразмерный массив транслита
  6.          
  7.         $count = count($rus);
  8.  
  9.         for($i = 0;$i = $count; $i++) { //временно пережимаем всю кириллицу в WIN-1251, для корректной работы
  10.         $russ[] = iconv('UTF-8', 'CP1251//IGNORE',$rus[$i]); //IGNORE - символы, которых нет в конечной кодировке, будут опущены
  11.          }
  12.  
  13.         $word = iconv('UTF-8', 'CP1251//IGNORE', $text); //пережимаем текст в WIN-1251
  14.         $word = str_replace($russ, $eng, strtolower($word)); //меняем кириллические символы на символы транслита. strtolower можно убрать, тогда придется добавить большие буквы в массивы $rus и $eng.
  15.  
  16.         return iconv('CP1251//IGNORE','UTF-8', $word); //возращаем строку в UTF-8
  17. }
  18.  


но код выдает ошибку не знаешь в чем может быть причина?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB