Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: транслит
 
 автор: AW   (18.12.2008 в 21:02)   письмо автору
 
 

Подскажите пожалуйста добрые люди как выполнить транслит файлов с рус на англ символы?
на компьютере имеется каталог с файлами html, в них также находятся подкаталоги. в этих html файлах в кодировке utf-8 находится содержимое на русском языке, с которым необходимо выполнить ряд последовательных манимуляций по переводу текста с кириллицы на латинские буквы, т.е. выполнить транслит. Следует также учитывать, что в файле находятся html тэги, которые при транслите будут игнорироваться. Результат записывается в отдельный каталог...
единственное, что я нашёл здесь, это
http://www.softtime.ru/scripts/translit.php
ещё есть полезная статья
http://www.ibm.com/developerworks/ru/library/os-php-readfiles/
но всё равно не могу додуматься как это всё реализовать
может у кого есть какие-нибудь идеи по этому поводу?

  Ответить  
 
 автор: Николай2357   (18.12.2008 в 22:29)   письмо автору
 
   для: AW   (18.12.2008 в 21:02)
 

А вот так не пробовали сделать?

  Ответить  
 
 автор: AW   (18.12.2008 в 22:49)   письмо автору
 
   для: Николай2357   (18.12.2008 в 22:29)
 

пробывали... там действительно есть много полезного, но такого, что я хочу, нет. поэтому и создал новую тему
проблема в том, что помимо транслита, надо непрерывно обработать кучу файлов! и записать их отдельно...
допустим возьмём этот скрипт, как его можно модернизировать? http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=41876
максимум я добился транслита с одного файла и запись результата в другой файл, но нужно обработать всё, что хранится в каталогах и подкаталогах - вот в чём проблема.

  Ответить  
 
 автор: Николай2357   (19.12.2008 в 04:13)   письмо автору
 
   для: 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>
Только учтите, что она перезапишет существующие файлы. То есть предварительно нужно сделать бэкап. Если Вам нужно это в процессе, тогда придется немного модернизировать, так как не понятно, куда Вы хотите поместить новые. Эта функция достанет все файлы указанной директории и все файлы во вложенных папках первого уровня. Если нужно глубже, то надо добавлять блоки.

  Ответить  
 
 автор: AW   (19.12.2008 в 19:17)   письмо автору
 
   для: Николай2357   (19.12.2008 в 04:13)
 

Высший пилотаж!) Огромнейшее человеческое спасибо за скрипт, это как раз то, что мне нужно :)
правда я столкнулся с небольшими проблемами... файлы изначально были в кодировке utf-8, а после перезаписи стали в кодировке ansi, а буквы стали нечитабельными (html). попробывал сделать так @file_put_contents('UTF-8',$file,$file_new); но транслита не произошло, хотя было написано, что файлы обработаны.
Было бы здорово, если можно было залезть ещё на один подкаталог поглубже.
Если папка указана неверно, появляется ошибка. Я только знаю, как можно проверить существование одного файла и доступно ли он для чтения, а вот тоже проделать с каталогом и подкаталогом я не знаю как. наверное есть функция наподобие dir_exists ($path) && is_readable ($path)? примерно так? Как все эти нюансы можно реализовать в данный скрипт?

  Ответить  
 
 автор: Николай2357   (20.12.2008 в 10:23)   письмо автору
1.4 Кб
 
   для: AW   (19.12.2008 в 19:17)
 

Ну вообще то скрипт это не мой, мне чужой славы не надо ))) Автор сего шедевра Trianon. Я только подсказал, как его можно использовать.
Не пойму почему, но функция strtr() напрочь отказалась работать с кирилицей в utf-8. Локаль не помогла... Так что вот. Может и кривенько, но работает точно. Кстати там же добавлен ещё один уровень.

  Ответить  
 
 автор: BinLaden   (20.12.2008 в 17:49)   письмо автору
 
   для: Николай2357   (20.12.2008 в 10:23)
 

> $file_new = encodestring(trim(file_get_contents($file)));

Ох что-то не похоже на Trianon'а.

  Ответить  
 
 автор: Николай2357   (20.12.2008 в 18:32)   письмо автору
 
   для: BinLaden   (20.12.2008 в 17:49)
 

Я же не про то, как он обрабатывает, а про то, как он файлы достаёт. Внимательне'й надо читать. А что кстати тут не так?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования