|
|
|
| Подскажите пожалуйста добрые люди как выполнить транслит файлов с рус на англ символы?
на компьютере имеется каталог с файлами html, в них также находятся подкаталоги. в этих html файлах в кодировке utf-8 находится содержимое на русском языке, с которым необходимо выполнить ряд последовательных манимуляций по переводу текста с кириллицы на латинские буквы, т.е. выполнить транслит. Следует также учитывать, что в файле находятся html тэги, которые при транслите будут игнорироваться. Результат записывается в отдельный каталог...
единственное, что я нашёл здесь, это
http://www.softtime.ru/scripts/translit.php
ещё есть полезная статья
http://www.ibm.com/developerworks/ru/library/os-php-readfiles/
но всё равно не могу додуматься как это всё реализовать
может у кого есть какие-нибудь идеи по этому поводу? | |
|
|
|
|
|
|
|
для: AW
(18.12.2008 в 21:02)
| | А вот так не пробовали сделать? | |
|
|
|
|
|
|
|
для: Николай2357
(18.12.2008 в 22:29)
| | пробывали... там действительно есть много полезного, но такого, что я хочу, нет. поэтому и создал новую тему
проблема в том, что помимо транслита, надо непрерывно обработать кучу файлов! и записать их отдельно...
допустим возьмём этот скрипт, как его можно модернизировать? http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=41876
максимум я добился транслита с одного файла и запись результата в другой файл, но нужно обработать всё, что хранится в каталогах и подкаталогах - вот в чём проблема. | |
|
|
|
|
|
|
|
для: AW
(18.12.2008 в 22:49)
| | Ну тогда возьмите ту функцию, и добавьте к ней эту:
<?php
function convert_file()
{
$path = isset($_POST['dir'])?$_POST['dir']:null;
$dir_files = opendir($path);
while($nest = readdir($dir_files))
{
$file = $path . "/" .$nest;
# Обработка файлов указанной директории
if(is_file($file))
{
$num++;
$list_file[] = $file;
$file_new = encodestring(trim(file_get_contents($file)));
@file_put_contents($file,$file_new);
}
if($nest != '.' && $nest != '..' && is_dir($path . "/" .$nest) )
{
$dir_nest = opendir($path . "/" . $nest);
while($file = readdir($dir_nest))
{
$file = $path . "/" . $nest ."/" .$file;
# Обработка файлов вложенных директорий 1-го уровня
if(is_file($file))
{
$num++;
$list_file[] = $file;
$file_new = encodestring(trim(file_get_contents($file)));
@file_put_contents($file,$file_new);
}
}
}
}
return "Обработано файлов: <b style='color:blue'>".$num."</b><br>".implode("<br>",$list_file);
}
if($_POST['dir']) echo convert_file();
?>
<form name="order_form" method="post" action="?id=1" >
Название директории<br>
<input name="dir" type="text"><br>
<input type="submit" value="Конвертировать">
</form>
| Только учтите, что она перезапишет существующие файлы. То есть предварительно нужно сделать бэкап. Если Вам нужно это в процессе, тогда придется немного модернизировать, так как не понятно, куда Вы хотите поместить новые. Эта функция достанет все файлы указанной директории и все файлы во вложенных папках первого уровня. Если нужно глубже, то надо добавлять блоки. | |
|
|
|
|
|
|
|
для: Николай2357
(19.12.2008 в 04:13)
| | Высший пилотаж!) Огромнейшее человеческое спасибо за скрипт, это как раз то, что мне нужно :)
правда я столкнулся с небольшими проблемами... файлы изначально были в кодировке utf-8, а после перезаписи стали в кодировке ansi, а буквы стали нечитабельными (html). попробывал сделать так @file_put_contents('UTF-8',$file,$file_new); но транслита не произошло, хотя было написано, что файлы обработаны.
Было бы здорово, если можно было залезть ещё на один подкаталог поглубже.
Если папка указана неверно, появляется ошибка. Я только знаю, как можно проверить существование одного файла и доступно ли он для чтения, а вот тоже проделать с каталогом и подкаталогом я не знаю как. наверное есть функция наподобие dir_exists ($path) && is_readable ($path)? примерно так? Как все эти нюансы можно реализовать в данный скрипт? | |
|
|
|
|
 1.4 Кб |
|
|
для: AW
(19.12.2008 в 19:17)
| | Ну вообще то скрипт это не мой, мне чужой славы не надо ))) Автор сего шедевра Trianon. Я только подсказал, как его можно использовать.
Не пойму почему, но функция strtr() напрочь отказалась работать с кирилицей в utf-8. Локаль не помогла... Так что вот. Может и кривенько, но работает точно. Кстати там же добавлен ещё один уровень. | |
|
|
|
|
|
|
|
для: Николай2357
(20.12.2008 в 10:23)
| | > $file_new = encodestring(trim(file_get_contents($file)));
Ох что-то не похоже на Trianon'а. | |
|
|
|
|
|
|
|
для: BinLaden
(20.12.2008 в 17:49)
| | Я же не про то, как он обрабатывает, а про то, как он файлы достаёт. Внимательне'й надо читать. А что кстати тут не так? | |
|
|
|