Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для SLameN
1 / 1 / 7
Регистрация: 29.10.2012
Сообщений: 247

Перевод текста в транслит внутри foreach

14.02.2014, 16:16. Показов 1872. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу загружаемый файл переделать в транслит, для транслита планирую брать такую функцию:
PHP
1
2
3
4
5
function translit($str) {
    $rus = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
    $lat = array('A', 'B', 'V', 'G', 'D', 'E', 'E', 'Gh', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sch', 'Y', 'Y', 'Y', 'E', 'Yu', 'Ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', 'y', 'y', 'y', 'e', 'yu', 'ya');
    return str_replace($rus, $lat, $str);
  }
Но как это сделать, если у меня массив мои загружаемых файлов
У меня следующий код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
foreach ($_FILES['file']['name'] as $k=>$v) {
            
            $uploaddir = '/server/www/history_scen/file/';
            $explode = explode('.', $_FILES['file']['name'][$k]); // разрезаем имя по точкам 
            $i = count($explode) - 1; // если в названии файла были еще точки 
            $extension = ".".$explode[$i]; // расширение
            $uploadfileName = $_FILES['file']['name'][$k]; // название файла 
            $linkFile .= basename($_FILES['file']['name'][$k])."+"; // название файла в БД
            $uploadfile = $uploaddir.$uploadfileName;
            if(move_uploaded_file($_FILES['file']['tmp_name'][$k], $uploadfile)) {
                echo "Норм";
            }
        }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.02.2014, 16:16
Ответы с готовыми решениями:

Перевод текста в транслит
Проблема, а точнее задачка: Мне нужно сделать вот такую программку. Структура такова, Дано два TMemo и кнопка. Суть программы вводим в...

Перевод текста в транслит при копировании
Добрый день! Друзья, подскажите, пожалуйста, можно ли средствами чистого JS или Jquery так сделать? Например, на странице фраза...

Перевод из кириллицы в транслит
Кто нить, подкиньте толковый пример перевода строки из кириллицы в транслит. Заранее благодарен...

13
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
14.02.2014, 20:09
PHP
1
file_put_contents($uploadfile, translit(file_get_contents($uploadfile)));
вместо echo 'Норм';
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
14.02.2014, 20:46
Лучший ответ Сообщение было отмечено SLameN как решение

Решение

SLameN, а не лучше так сделать функцию?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function translit($str) 
    {
        $replace = array(
                        'а' => 'a',   'б' => 'b',
                        'в' => 'v',   'г' => 'g',
                        'д' => 'd',   'е' => 'e',
                        'ё' => 'e',   'ж' => 'gh',
                        'з' => 'z',   'и' => 'i',
                        'й' => 'y',   'к' => 'k',
                        'л' => 'l',   'м' => 'm',
                        'н' => 'n',   'о' => 'o',
                        'п' => 'p',   'р' => 'r',
                        'с' => 's',   'т' => 't',
                        'у' => 'u',   'ф' => 'f',
                        'х' => 'h',   'ц' => 'c',
                        'ч' => 'ch',  'ш' => 'sh',
                        'щ' => 'sch', 'ъ' => 'y',
                        'ы' => 'y',   'ь' => 'y',
                        'э' => 'e',   'ю' => 'yu',
                        'я' => 'ya'
                    );
        
        # Тут используйте mb_strtolower() заместо strtolower, если ваша кодировка UTF-8
        return strtr( strtolower($str), $replace );
    }
По теме:
Это
PHP
1
$uploadfileName = $_FILES['file']['name'][$k]; // название файла
Замените на
PHP
1
$uploadfileName = translit( $_FILES['file']['name'][$k] ); // название файла
Добавлено через 1 минуту

Не по теме:

insideone, а Вас я вообще понял. Что вы делаете? :)



Добавлено через 3 минуты

Не по теме:

Ааа.. Я понял :D

Цитата Сообщение от SLameN Посмотреть сообщение
Хочу загружаемый файл переделать в транслит
нужно не имя, а файл переделать.


SLameN, если вам нужно именно файл, а не его имя переделать, тогда делайте как показал insideone, но не вместо echo 'Норм'; а вместо
PHP
1
2
3
if(move_uploaded_file($_FILES['file']['tmp_name'][$k], $uploadfile)) {
                echo "Норм";
            }
1
 Аватар для SLameN
1 / 1 / 7
Регистрация: 29.10.2012
Сообщений: 247
15.02.2014, 11:22  [ТС]
lyod
Если я сделаю вместо move_uploaded_file, то как файл перенесется из временной директории?

insideone
Спасибо

Я читаю, что означает это: file_put_contents , file_get_contents, но не могу понять... Если вам несложно, можете немного разжевать?

Щас проверить не могу, на работе делал.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
15.02.2014, 11:40
Цитата Сообщение от SLameN Посмотреть сообщение
Хочу загружаемый файл переделать в транслит
Вы бы вопрос задавали не двусмысленно

первый отвечавший решил что Вы хотите содержимое файла переделать, второй что имя.
а я не знаю что всё таки вы хотите, судя по вопросу, всё таки содержимое? но зачем не понятно такое может понадобиться, а вот имя, как раз желательно переделывать.

как переделать имя Вам уже сказали, в 3 посте.

что же касается переделки всего файла, file_get_contents - плохой пример, он может сожрать всё озу хостинга, а вдруг ещё и параллельно парочка будет запущена?
я уже сталкивался с файлами по 8+ гб
по этому, лучше читать по строке или по какому то количеству символов, прям из файла во временной директории, переводить, и сразу записывать эту строку в новую директорию.
1
 Аватар для SLameN
1 / 1 / 7
Регистрация: 29.10.2012
Сообщений: 247
15.02.2014, 11:44  [ТС]
Мне нужно поменять имя файла, когда будет создаваться файл в директории. Для чего это делаю, потому что русские символы не понимает, для этого и хочу транслит.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
15.02.2014, 11:46
Цитата Сообщение от SLameN Посмотреть сообщение
Мне нужно поменять имя файла, когда будет создаваться файл в директории. Для чего это делаю, потому что русские символы не понимает, для этого и хочу транслит.
Вот, а Вы всех ввели в заблуждение, тогда Вам дали ответ в 3 посте

Цитата Сообщение от lyod Посмотреть сообщение
Это
Код PHP
PHP
1
$uploadfileName = $_FILES['file']['name'][$k]; // название файла
Замените на
Код PHP
PHP
1
$uploadfileName = translit( $_FILES['file']['name'][$k] ); // название файла
0
 Аватар для SLameN
1 / 1 / 7
Регистрация: 29.10.2012
Сообщений: 247
15.02.2014, 11:49  [ТС]
Ну извините тогда) И спасибо большое за помощь!
0
15.02.2014, 12:18

Не по теме:

Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
я уже сталкивался с файлами по 8+ гб
Текстовые файлы по 8+ гб? O_o Ёлки. Я таких ещё не встречал. :D

0
15.02.2014, 12:19

Не по теме:

у меня на хосте набегают за неделю логи на 8 гб :D

0
15.02.2014, 12:31

Не по теме:

Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
у меня на хосте набегают за неделю логи на 8 гб
Плодотворно :D.

0
 Аватар для SLameN
1 / 1 / 7
Регистрация: 29.10.2012
Сообщений: 247
17.02.2014, 08:31  [ТС]
Почему то не работает strtolower. Пробовал и mb_strtolower

А если мне еще пробелы убрать, нужно так добавить?
PHP
1
2
return strtr(strtolower($str), $replace);
return str_replace(' ','_',$str);
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
17.02.2014, 10:02
Цитата Сообщение от SLameN Посмотреть сообщение
А если мне еще пробелы убрать, нужно так добавить?
Нет, лучше в массиве так же, как и все символы добавить:
PHP
1
' ' => 'символ, которым заменим пробел:
В итоге массив вот так будет выглядеть:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$replace = array(
                        'а' => 'a',   'б' => 'b',
                        'в' => 'v',   'г' => 'g',
                        'д' => 'd',   'е' => 'e',
                        'ё' => 'e',   'ж' => 'gh',
                        'з' => 'z',   'и' => 'i',
                        'й' => 'y',   'к' => 'k',
                        'л' => 'l',   'м' => 'm',
                        'н' => 'n',   'о' => 'o',
                        'п' => 'p',   'р' => 'r',
                        'с' => 's',   'т' => 't',
                        'у' => 'u',   'ф' => 'f',
                        'х' => 'h',   'ц' => 'c',
                        'ч' => 'ch',  'ш' => 'sh',
                        'щ' => 'sch', 'ъ' => 'y',
                        'ы' => 'y',   'ь' => 'y',
                        'э' => 'e',   'ю' => 'yu',
                        'я' => 'ya', ' ' => 'символ, которым заменим пробел'
                    );
Цитата Сообщение от SLameN Посмотреть сообщение
Пробовал и mb_strtolower
Вторым аргументом в этой функции укажите вашу кодировку.
1
 Аватар для SLameN
1 / 1 / 7
Регистрация: 29.10.2012
Сообщений: 247
17.02.2014, 10:27  [ТС]
Большое спасибо за помощь! Что-то я вообще не могу никак понять массивов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2014, 10:27
Помогаю со студенческими работами здесь

Перевод в транслит и обратно
Здравствуйте. Помогите, пожалуйста, с прогой. Нужно сделать так, чтобы любая строка переводилась в транслит и обратно. Заранее спасибо.

Перевод слова из кириллицы в транслит
нужна функция перевода слова из кириллицы в транслит

перевод русских букв в транслит
Задача: Перевести русские буквы в транслит, с ведением протокола.

Перевод фразы с русского языка в транслит
Задания: 1) Создать текстовый файл средами языка программирования, ввести в него данные и сохранить на HDD, затем вывести данные на...

Транслит текста с английского на русский
Роясь на форуме нашел код транслита из русского на английский. Вопрос вот в чем: А можно ли переделать данный код (либо написать новый)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru