• 05-03-2014, 09:23:50
    #1
    Merhaba, "nice" geçiyorsa "good" yap, "good" geçiyorsa "nice" yaptırmak istiyorum fakat bir noktada takıldım;

    "eski.txt" ve "yeni.txt" isim 2 farklı txt dosyam var, eski.txt dosyasına "nice", yeni.txt dosyasına "good" yazıyorum ve bu şekilde metinde geçen "nice" kelimelerini "good" olarak değiştirebiliyorum.

    Fakat txt dosyalarını aşağıdaki şekilde yaptığım zaman replace işlemi gerçekleşmiyor.





    $text = "nice car";
    
    $false = file_get_contents("eski.txt");
    $true = file_get_contents("yeni.txt");
    $false = explode("\n", $false);
    $true = explode("\n", $true);
    $text = str_replace($false, $true, $text);  
    
    echo $text;
    Teşekkürler,
    iyi günler dilerim.
  • 05-03-2014, 13:05:05
    #2
    @burhancepni,

    Büyük ihtimal karakter kodlaması farklılıklarından kaynaklanan bir eksiklik var gibi geliyor bana.

    <?php
    echo $text = "nice car"; 
    echo "<br />";
    
    $false = file("eski.txt"); 
    $true = file("yeni.txt"); 
    
    foreach($false as $key => $value){
    	$false[$key] = trim( $value );
    }
    
    foreach($true as $key => $value){
    	$true[$key] = trim( $value );
    }
    
    //print_r($false);print_r($true);
    
    echo $text = str_replace( $false, $true, $text);
    boşlukları silip denediğimde oluyor.
  • 05-03-2014, 14:14:27
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    burhancepni adlı üyeden alıntı: mesajı görüntüle
    Merhaba, "nice" geçiyorsa "good" yap, "good" geçiyorsa "nice" yaptırmak istiyorum fakat bir noktada takıldım;

    "eski.txt" ve "yeni.txt" isim 2 farklı txt dosyam var, eski.txt dosyasına "nice", yeni.txt dosyasına "good" yazıyorum ve bu şekilde metinde geçen "nice" kelimelerini "good" olarak değiştirebiliyorum.

    Fakat txt dosyalarını aşağıdaki şekilde yaptığım zaman replace işlemi gerçekleşmiyor.





    $text = "nice car";
    
    $false = file_get_contents("eski.txt");
    $true = file_get_contents("yeni.txt");
    $false = explode("\n", $false);
    $true = explode("\n", $true);
    $text = str_replace($false, $true, $text);  
    
    echo $text;
    Teşekkürler,
    iyi günler dilerim.
    Resimlerden anladığım kadarı ile sonuçta hiçbir değişiklik olmayacak. Çünkü, Sen ilk başta "nice" kelimesini "good" 'a, daha sonra 2. satırda ise "good" kelimesini tekrar "nice" 'a dönüştürmektesin. str_replace her kelime için değişikliği en baştan yapar dolayısı ile senin "str_replace" yerine "strtr" fonksiyonunu kullanman gerekiyor.

    http://tr1.php.net/manual/tr/function.strtr.php
  • 05-03-2014, 14:25:14
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    @burhancepni;

    eski.txt;
    laravel
    yeni.txt;
    javascript
    test.php
    <?php
    	
    	function clean_empty_lines(array $array)
    	{
    		foreach($array as $key => $value)
    		{
    			if(empty($value))
    			{
    				unset($array[$key]);
    			}
    		}
    		
    		return array_values($array);
    	}
    	
    	$text = "laravel codeigniter symfony zend";
    	
    	$from = clean_empty_lines(explode("\n", trim(file_get_contents("eski.txt"))));
    	$to = clean_empty_lines(explode("\n", trim(file_get_contents("yeni.txt"))));
    	
    	$text = str_replace($from, $to, $text);
    	
    	echo $text;
    çıktı;