• 06-04-2022, 03:10:02
    #1
    https://www.r10.net/-link sayısı:3
    https://www.r11.net/-link sayısı:7
    https://www.r12.net/-link sayısı:10
    https://www.r11.net/-link sayısı:1
    https://www.r12.net/-link sayısı:11
    https://www.r10.net/-link sayısı:9

    merhaba arkadaşlar. yukarıdaki gibi bir txt dosyam var. Benzer site adreslerinden sadece 1 tane kalsın istiyorum. Yani r10.com dan 2 tane varsa 1 satırı komple silsin istiyorum. Hangi satırı sildiği önemli değil, aynı site adresi varsa bir satır kalsın yeterli.

    Misal yukarıdaki txt dosyasını aşşağıdakine çevirsin

    https://www.r10.net/-link sayısı:3
    https://www.r11.net/-link sayısı:7
    https://www.r12.net/-link sayısı:10

    bunu nasıl yapabilirim acaba?
  • 06-04-2022, 03:28:12
    #2
    ilk önce hepsini phpde satır satır çektir sonra tekrar yeni bir txt dosyasına aynısı var mı diye sorgulayarak yazdır.
  • 06-04-2022, 05:28:45
    #3
    Sizinki biraz daha farklıymış dosya düzeninize göre değiştirirsiniz.

    deneme.txt

    Alıntı
    site1.com sayısı:2
    site1.com sayısı:4
    site4.com sayısı:4
    site5.com sayısı:4

    <?php
    
    $file = file('deneme.txt');
    $domains = array();
    $unique_lines = array();
    foreach($file as $line)
    {
    	$line = trim($line);
    	preg_match('@^(.*?) sayısı:(.*?)$@si',$line,$params);
    	
    	if(!in_array($params[1],$domains))
    	{
    		array_push($domains,$params[1]);
    		array_push($unique_lines,$params[1].' sayısı:'.$params[2]);
    	}
    }
    
    $new_file = implode("\n",array_map(function($line){ return trim($line); }, $unique_lines));
    
    
    
    echo $new_file; // Ekrana basar
    
    file_put_contents('yeni_deneme.txt',$new_file); // Yeni bir dosyaya kayıt eder.
    
    ?>



    Aynı satırları silme

    <?php
    
    $file = file('deneme.txt');
    $unique_lines = array_unique($file);
    
    $new_file = implode("\n",array_map(function($line){ return trim($line); }, $unique_lines));
    
    
    
    echo $new_file; // Ekrana basar
    
    file_put_contents('yeni_deneme.txt',$new_file); // Yeni bir dosyaya kayıt eder.
    
    ?>