PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
dieGo_nk
Отправлено: 22 Февраля, 2012 - 15:09:07
Новичок
Покинул форум
Сообщений всего: 25
Дата рег-ции: Июнь 2011
Помог: 1 раз(а)
Все привет!
Нужна ваша помощь!
Есть функция транслита для UTF8
PHP:
скопировать код в буфер обмена
public function _translit( $string )
{
'а' => 'a' ,
'б' => 'b' ,
'в' => 'v' ,
'г' => 'g' ,
'д' => 'd' ,
'е' => 'e' ,
'ё' => 'yo' ,
'ж' => 'zh' ,
'з' => 'z' ,
'и' => 'i' ,
'й' => 'j' ,
'к' => 'k' ,
'л' => 'l' ,
'м' => 'm' ,
'н' => 'n' ,
'о' => 'o' ,
'п' => 'p' ,
'р' => 'r' ,
'с' => 's' ,
'т' => 't' ,
'у' => 'u' ,
'ф' => 'f' ,
'х' => 'h' ,
'ц' => 'c' ,
'ч' => 'ch' ,
'ш' => 'sh' ,
'щ' => 'csh' ,
'ь' => '' ,
'ы' => 'y' ,
'ъ' => '' ,
'э' => 'e' ,
'ю' => 'yu' ,
'я' => 'ya' ,
',' => '_' ,
' ' => '_' ,
' - ' => '_' ,
'-' => '_' ,
) ;
return $output ;
}
Принцип работы такой, ищет символ из строки в ключах у массива и меняет на их значения.
Вопрос: А как сделать так: если символ не найден в ключе удалить символ в строке?(Отредактировано автором: 22 Февраля, 2012 - 15:10:52)
Zuldek
Отправлено: 22 Февраля, 2012 - 15:13:18
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
ищите каждое элемент массива в строке в теле цикла если не найдено совпадение то удаляйте
строковые функции смотрим в мануале.
(Отредактировано автором: 22 Февраля, 2012 - 15:14:12)
dieGo_nk
Отправлено: 22 Февраля, 2012 - 15:31:52
Новичок
Покинул форум
Сообщений всего: 25
Дата рег-ции: Июнь 2011
Помог: 1 раз(а)
Этот скрипт не удаляет не найденные в массиве знаки
т.е если сделать так
Вернёт abc №4"3
(Добавление)
В общем я сделал так:
PHP:
скопировать код в буфер обмена
<?PHP
function _translit( $string )
{
'а' => 'a' ,
'б' => 'b' ,
'в' => 'v' ,
'г' => 'g' ,
'д' => 'd' ,
'е' => 'e' ,
'ё' => 'yo' ,
'ж' => 'zh' ,
'з' => 'z' ,
'и' => 'i' ,
'й' => 'j' ,
'к' => 'k' ,
'л' => 'l' ,
'м' => 'm' ,
'н' => 'n' ,
'о' => 'o' ,
'п' => 'p' ,
'р' => 'r' ,
'с' => 's' ,
'т' => 't' ,
'у' => 'u' ,
'ф' => 'f' ,
'х' => 'h' ,
'ц' => 'c' ,
'ч' => 'ch' ,
'ш' => 'sh' ,
'щ' => 'csh' ,
'ь' => '' ,
'ы' => 'y' ,
'ъ' => '' ,
'э' => 'e' ,
'ю' => 'yu' ,
'я' => 'ya' ,
',' => '_' ,
' ' => '_' ,
' - ' => '_' ,
'-' => '_' ,
) ;
$result = '' ;
for ( $i = 0 ; $i < strlen ( $string ) ; $i ++ ) {
$sybmol = substr ( $string , $i , 1
) ; $src = @ $table [ $sybmol ] ;
if ( ! $src )
{
$result .= '' ;
}
else
{
}
}
return $result ;
}
?>
(Добавление)
Всем спасибо)
etoYA
Отправлено: 22 Февраля, 2012 - 15:34:49
Участник
Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011
Откуда: Крым
Помог: 21 раз(а)
dieGo_nk , это да, но он упращает ваш.
illy пишет: if(!in_array()....
вот это удаляет
Или просто символ заменить на пустую строку
(Отредактировано автором: 22 Февраля, 2012 - 15:35:28)
illy
Отправлено: 22 Февраля, 2012 - 15:59:21
Участник
Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011
Откуда: от верблюда)
Помог: 28 раз(а)
Да
не хватает.
набирай по-быстрее.
мне нужен рейтинг
-----Всё гениальное - просто
И ещё проще, если ты - индиго
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB