PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
VestCoastman
Отправлено: 27 Сентября, 2013 - 14:38:35
Посетитель
Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010
Помог: 3 раз(а)
UPD:
Ищу аналог функции
transliterator_transliterate() на чистом php (Без PECL)
Посоветуйте класс для конвертирования символов в латиницу.
Например:
Cześć => Czesc
Привет => Privet
Ћао => chao
(Отредактировано автором: 27 Сентября, 2013 - 16:35:27)
LIME
Отправлено: 27 Сентября, 2013 - 14:46:19
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
или не заморачиваться с установкой PECL расширения
Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
function rus2translit( $string ) {
'а' => 'a' , 'б' => 'b' , 'в' => 'v' ,
'г' => 'g' , 'д' => 'd' , 'е' => 'e' ,
'ё' => 'e' , 'ж' => 'zh' , 'з' => 'z' ,
'и' => 'i' , 'й' => 'y' , 'к' => 'k' ,
'л' => 'l' , 'м' => 'm' , 'н' => 'n' ,
'о' => 'o' , 'п' => 'p' , 'р' => 'r' ,
'с' => 's' , 'т' => 't' , 'у' => 'u' ,
'ф' => 'f' , 'х' => 'h' , 'ц' => 'c' ,
'ч' => 'ch' , 'ш' => 'sh' , 'щ' => 'sch' ,
'ь' => '\'' , 'ы' => 'y' , 'ъ' => '\'' ,
'э' => 'e' , 'ю' => 'yu' , 'я' => 'ya' ,
'А' => 'A' , 'Б' => 'B' , 'В' => 'V' ,
'Г' => 'G' , 'Д' => 'D' , 'Е' => 'E' ,
'Ё' => 'E' , 'Ж' => 'Zh' , 'З' => 'Z' ,
'И' => 'I' , 'Й' => 'Y' , 'К' => 'K' ,
'Л' => 'L' , 'М' => 'M' , 'Н' => 'N' ,
'О' => 'O' , 'П' => 'P' , 'Р' => 'R' ,
'С' => 'S' , 'Т' => 'T' , 'У' => 'U' ,
'Ф' => 'F' , 'Х' => 'H' , 'Ц' => 'C' ,
'Ч' => 'Ch' , 'Ш' => 'Sh' , 'Щ' => 'Sch' ,
'Ь' => '\'' , 'Ы' => 'Y' , 'Ъ' => '\'' ,
'Э' => 'E' , 'Ю' => 'Yu' , 'Я' => 'Ya' ,
) ;
return strtr ( $string , $converter ) ;
}
(Добавление)
после поправки ТС не актуально
VestCoastman
Отправлено: 27 Сентября, 2013 - 14:48:38
Посетитель
Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010
Помог: 3 раз(а)
EuGen , а без PECL есть?
P.S. Будет использоваться как преобразование в чпу url
(Отредактировано автором: 27 Сентября, 2013 - 14:50:44)
VestCoastman
Отправлено: 27 Сентября, 2013 - 15:34:02
Посетитель
Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010
Помог: 3 раз(а)
esterio , а разве iconv сможет преобразовать разные языки?
Например:
PHP:
скопировать код в буфер обмена
$string = 'Cześć, Привет, 你好, Hello' ;
echo mytranslate( $string ) ; // Return "Czesc, Privet, Ni hao, Hello"
Блин, тут символы преобразуются в сущности :/
(Добавление)
Есть еще идеи?
transliterator_transliterate() - отличная штука, но работает только с PECL'ом.
Есть ли аналог данной штуки на чистом php?(Отредактировано автором: 27 Сентября, 2013 - 15:35:38)
VestCoastman
Отправлено: 27 Сентября, 2013 - 16:22:07
Посетитель
Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010
Помог: 3 раз(а)
LIME пишет: дык поставь и все
1 строка в терминале....скорее всего...если зависимости не потребует
На моей машинке то стоит, но я же велик пишу для паблика. Например на хостингере уже проверил - не работает, а на fozzy работает.
(Отредактировано автором: 27 Сентября, 2013 - 16:22:29)
VestCoastman
Отправлено: 27 Сентября, 2013 - 18:44:40
Посетитель
Покинул форум
Сообщений всего: 374
Дата рег-ции: Дек. 2010
Помог: 3 раз(а)
По ходу аналога не существует. Сделал так, мб кому пригодится.
Иероглифы, конечно не изменит, но если строка пуста, то будет сгенерирована рандомная.
PHP:
скопировать код в буфер обмена
class convert {
public function convertToLatin( $str ) {
'а' => 'a' , 'б' => 'b' , 'в' => 'v' , 'г' => 'g' ,
'д' => 'd' , 'е' => 'e' , 'ё' => 'yo' , 'ж' => 'zh' ,
'з' => 'z' , 'и' => 'i' , 'й' => 'y' , 'к' => 'k' ,
'л' => 'l' , 'м' => 'm' , 'н' => 'n' , 'о' => 'o' ,
'п' => 'p' , 'р' => 'r' , 'с' => 's' , 'т' => 't' ,
'у' => 'u' , 'ф' => 'f' , 'х' => 'h' , 'ц' => 'c' ,
'ч' => 'ch' , 'ш' => 'sh' , 'щ' => 'sh' , 'ы' => 'i' ,
'э' => 'e' , 'ю' => 'yu' , 'я' => 'ya'
) ;
$str = iconv ( "utf-8" , "us-ascii//TRANSLIT" , $str ) ;
if ( empty ( $str ) ) { $str = self :: passgen ( 10
) ; } return $str ;
}
private static function passgen( $length = 6) {
$chars = "abcdefghijklmnopqrstuvwxyz" ;
$string = "" ;
while ( strlen ( $string ) < $length ) { $string .= $chars [ mt_rand ( 0
, $len ) ] ; }
return $string ;
}
}
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB