замена текста на похожие символы

Discussion in 'PHP' started by GAiN, 20 Jan 2014.

  1. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    как в русском тексте заменить похожие буквы на английские с виду похожие?

    делали мне такой код, не работает:

    PHP:
    <?PHP  
    $filename 
    "file.txt";  
    $tmp_name "tmp.txt";  
    $to="уехіаросКЕНХІАРОСМТ";  
    $from "yexiapocKEHXIAPOCMT";  

    $in_file fopen($filename"r");  
    $out_file fopen($tmp_name"w+");  

    while (!
    feof($in_file))  
    {  
        
    $tmp fread($in_file1);  
        for (
    $i=0$i<strlen($from); $i++)  
            if (
    $tmp==$from[$i]) $tmp=$to[$i];  
        
    fwrite($out_file$tmp);  
    }  
    fclose($in_file);  
    fclose($out_file);  
    unlink($filename);  
    rename($tmp_name$filename);  
    ?>

    по примерам в сети сделал такой, но не преобразует он текст
    PHP:
    <?php 
    header
    ("Content-Type: text/html; charset=utf-8"); 

        function 
    _replace(&$str, &$trans
        { 
          for (
    $i 0$i strlen($str); $i++) 
            if (
    rand(0,1) and isset($trans[$str[$i]])) 
                
    $str[$i] = $trans[$str[$i]]; 
        } 

        
    $trans = array( 
            
    'у' => 'y'
            
    'е' => 'e'
            
    'а' => 'a'
            
    'о' => 'o'
            
    'У' => 'Y'
            
    'Е' => 'E'
            
    'А' => 'A'
            
    'О' => 'O'
            
    'Р' => 'P'
            
    'р' => 'p'
            
    'к' => 'k'
            
    'К' => 'K'
        ); 

        
    $str 'aodtftyhкыепо'
        
    _replace($str$trans); 

        echo 
    $str
    ?>
     
  2. 4upakabr0

    4upakabr0 Member

    Joined:
    14 May 2008
    Messages:
    124
    Likes Received:
    23
    Reputations:
    0
    GAiN , попробуй вот так

    Code:
     <?php 
        
        $str = 'aodtftyhкыепо'; 
    	
    	$trans = array( 
            'у' => 'y', 
            'е' => 'e', 
            'а' => 'a', 
            'о' => 'o', 
            'У' => 'Y', 
            'Е' => 'E', 
            'А' => 'A', 
            'О' => 'O', 
            'Р' => 'P', 
            'р' => 'p', 
            'к' => 'k', 
            'К' => 'K', 
        ); 
    	
    	for ($i = 0; $i < strlen($str); $i++) 
    		if (isset($trans[$str[$i]])) {				
    			$str[$i]=$trans[$str[$i]];
    		}	  
    	echo $str; 
    ?> 
    а потом оберни это всё в функцию.

    зы: у тебя там в вообще ранд стоит, бле.
     
  3. totenkopf

    totenkopf Elder - Старейшина

    Joined:
    19 Jul 2010
    Messages:
    91
    Likes Received:
    63
    Reputations:
    19
    Не просто так стоит, однако. Задача видимо такая. Так получить псевдоуникальный текст проще (вариантов больше).
    Для спама видимо.

    В php не очень разбираюсь, но кажется задействован rand несовсем правильно.
     
    #3 totenkopf, 21 Jan 2014
    Last edited: 21 Jan 2014
  4. madhatter

    madhatter Member

    Joined:
    7 Aug 2013
    Messages:
    539
    Likes Received:
    49
    Reputations:
    54
    Вы уже задавали этот вопрос, на него уже был дан исчерпывающий ответ. Зачем еще одну тему городить?

    /showpost.php?p=3654009&postcount=22038
     
  5. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,531
    Likes Received:
    166
    Reputations:
    99
    для обхода программы антиплагиат, текст с большим объёмом, может из за этого и не работают скрипты выше нивкакую
     
  6. madhatter

    madhatter Member

    Joined:
    7 Aug 2013
    Messages:
    539
    Likes Received:
    49
    Reputations:
    54
    А я вам даже больше скажу - они и не должны работать для антиплагиата, который эту тему с подменой букв палит уже лет пять, наверное.