Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   PHP (http://www.flasher.ru/forum/forumdisplay.php?f=20)
-   -   Полезная функция копирования файлов. Оцените пожалуйста (http://www.flasher.ru/forum/showthread.php?t=61544)

cosmo 06.08.2004 11:24

Полезная функция копирования файлов. Оцените пожалуйста
 
Код:

$filesdir="img";
function rusConv($filename) {
global $i,$filesdir;
        $tlcfn=strtr($filename,"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ ","абвгдеёжзийклмнопрстуфхцчшщъыьэюя_");
        $tlcfn=str_replace("а","a",$tlcfn);
        $tlcfn=str_replace("б","b",$tlcfn);
        $tlcfn=str_replace("в","v",$tlcfn);
        $tlcfn=str_replace("г","g",$tlcfn);
        $tlcfn=str_replace("д","d",$tlcfn);
        $tlcfn=str_replace("е","e",$tlcfn);
        $tlcfn=str_replace("ё","yo",$tlcfn);
        $tlcfn=str_replace("ж","j",$tlcfn);
        $tlcfn=str_replace("з","z",$tlcfn);
        $tlcfn=str_replace("и","i",$tlcfn);
        $tlcfn=str_replace("й","y",$tlcfn);
        $tlcfn=str_replace("к","k",$tlcfn);
        $tlcfn=str_replace("л","l",$tlcfn);
        $tlcfn=str_replace("м","m",$tlcfn);
        $tlcfn=str_replace("н","n",$tlcfn);
        $tlcfn=str_replace("о","o",$tlcfn);
        $tlcfn=str_replace("п","p",$tlcfn);
        $tlcfn=str_replace("р","r",$tlcfn);
        $tlcfn=str_replace("с","s",$tlcfn);
        $tlcfn=str_replace("т","t",$tlcfn);
        $tlcfn=str_replace("у","u",$tlcfn);
        $tlcfn=str_replace("ф","f",$tlcfn);
        $tlcfn=str_replace("х","h",$tlcfn);
        $tlcfn=str_replace("ц","c",$tlcfn);
        $tlcfn=str_replace("ч","ch",$tlcfn);
        $tlcfn=str_replace("ш","sh",$tlcfn);
        $tlcfn=str_replace("щ","sch",$tlcfn);
        $tlcfn=str_replace("ъ","",$tlcfn);
        $tlcfn=str_replace("ы","yi",$tlcfn);
        $tlcfn=str_replace("ь","",$tlcfn);
        $tlcfn=str_replace("э","ye",$tlcfn);
        $tlcfn=str_replace("ю","yu",$tlcfn);
        $tlcfn=str_replace("я","ya",$tlcfn);
        while (file_exists($filesdir."/".str_replace(substr($tlcfn,0,strrpos($tlcfn,".")),substr($tlcfn,0,strrpos($tlcfn,".")).$i,$tlcfn))) {
        $i++;
        }
        return str_replace(substr($tlcfn,0,strrpos($tlcfn,".")),substr($tlcfn,0,strrpos($tlcfn,".")).$i,$tlcfn);
}

Функция делает следующее:
1. Перекодирует имена картинок из русских в английские (полезно для глупых секретарш, которым не объяснишь, что русское название картинки и английское имеет большую разницу)

2. Если в папке есть файл с таким именем, то делает его копию.

Синтаксис такой:
copy($file,$filesdir."/".rusConv($file_name));

Crazy 06.08.2004 11:54

Маниакальное количество str_replace....

cosmo 06.08.2004 12:13

Это плохо или хорошо? Я хотел сделать strtr, но функция работает только с одиночными символами

Crazy 06.08.2004 14:31

Цитата:

Оригинал написал(а) cosmo
Я хотел сделать strtr
Лично я и сейчас вижу в твоем коде strtr.

styx 06.08.2004 14:43

А что мешает использовать strtr для одиночных, а для оставшихся букв - replace :)

juggy 06.08.2004 16:36

гм. странная функция.

а про strtolwer мы не слышали?

Для транслита могу предложить свою функцию.
PHP код:

function translit($str){
    
$t[а]="a";
    
$t[б]="b";
    
$t[в]="v";
    
$t[г]="g";
    
$t[д]="d";
    
$t[е]="e";
    
$t[ё]="yo";
    
$t[ж]="zh";
    
$t[з]="z";
    
$t[и]="i";
    
$t[й]="j";
    
$t[к]="k";
    
$t[л]="l";
    
$t[м]="m";
    
$t[н]="n";
    
$t[о]="o";
    
$t[п]="p";
    
$t[р]="r";
    
$t[с]="s";
    
$t[т]="t";
    
$t[у]="u";
    
$t[ф]="f";
    
$t[х]="kh";
    
$t[ц]="ts";
    
$t[ч]="tch";
    
$t[ш]="sh";
    
$t[щ]="tsh";
    
$t[ь]="";
    
$t[ы]="y";
    
$t[ъ]="";
    
$t[э]="e";
    
$t[ю]="yu";
    
$t[я]="ya";
    
$t[Ё]="Yo";

    
$new="";
    for (
$i=0$i<strlen($str);$i++) {
        
$ch=$str[$i];
        if(
"А"<=$ch and $ch<="Я"){
            
$ch=chr(ord($ch)+32);
            
$new.=$t[$ch];
        } 
        elseif((
"а"<=$ch and $ch<="я") or $ch=="ё" or $ch=="Ё" ){
            
$new.=$t[$ch];
        }
        elseif(
"A"<=$ch and $ch<="Z"){
            
$new.=chr(ord($ch)+32);
        }
        elseif((
"a"<=$ch and $ch<="z") or ("0"<=$ch and $ch<="9")){
            
$new.=$ch;
        }

    }
    return(
$new);




Часовой пояс GMT +4, время: 18:58.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.