Arkadaşlar bir kaç aydır arayıp bulamadığım aslında varlığından haberim olan bir PHP koduna ihtiyacım oldu.
Elimde birden fazla txt dosyası var ornek:
1.txt
2.txt
3.txt
her dosyanın içerisinde
111
222
333 satırları var
beni 4. dosya içerisinde bu satırları
111222333
olarak birleştirmek istiyorum.
Yardımınızı bekliyorum.
PHP txt satırlarını karşılıklı birleştirme
4
●1.469
- 25-08-2016, 09:54:10Misafir adlı üyeden alıntı: mesajı görüntüle
eğer dediğiniz gibi isimler düzenliyse ve yanlış anlamadıysam
<?php //toplam dosya sayınız $dosya_sayisi = 4; //atanacak değer $son_deger =""; //tüm dosyaların içini okutup bir değere atıyoruz. for($i=1;$i<$dosya_sayisi;$i++){ $son_deger.=file_get_contents($i.".txt"); } //1 2 3 .txt lerin değerlerini 4. txt e ye geçiriyoruz. file_put_contents("4.txt",$son_deger); //ekrana sonucu yazdırmak içinde echo file_get_contents("4.txt"); ?> - 25-08-2016, 12:24:54Mesajım bulunsun pc ye geçince ufak bir örnek ekliycem
--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 12:24:54 -->-> Daha önceki mesaj 11:41:35 --
İşinizi görür sanarım.Misafir adlı üyeden alıntı: mesajı görüntüle
<?php $bir = fopen("1.txt",'r'); $birdizi = Array(); while(!feof($bir)){ $satirbir = fgets($bir); $birdizi[] = $satirbir; } fclose($bir); $iki = fopen("2.txt",'r'); $ikidizi = Array(); while(!feof($iki)){ $satiriki = fgets($iki); $ikidizi[] = $satiriki; } fclose($iki); $uc = fopen("3.txt",'r'); $ucdizi = Array(); while(!feof($uc)){ $satiruc = fgets($uc); $ucdizi[] = $satiruc; } fclose($uc); touch("4.txt"); $dosya = fopen("4.txt", 'w'); for($i = 0; $i < count($birdizi); $i++){ $veri = trim($birdizi[$i]).trim($ikidizi[$i]).trim($ucdizi[$i])."\r\n"; fwrite($dosya, $veri); } fclose($dosya); ?> - 25-08-2016, 17:56:14Henüz test etmedim.. Şu an kopyaladım kodu Maus 'ta bekliyor öyle
bir kaç dakika içinde test edicem . Teşekkür ederim.
Edit:
Arkadaşım eline, aklına sağlık. çok teşekkür ederim. çalıştı .. bunu yapan bir program var elimde ama 10 MB civarı bir text dosyası iÇin dakikalarca bekliyordum.. ayrıca olur olmadık yerlerde gizli hata kodları oluŞturuyordu.
--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 16:48:26 -->-> Daha önceki mesaj 16:41:15 --
Bunu şimdi gordum. Ben bir istedim Allah iki verdi.. Buda çalışırsa ikisinide kullanıcam. Bu forumda rep vermek gibi birsey varmıdır bilmiyorum +++
--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 16:54:42 -->-> Daha önceki mesaj 16:48:26 --
evet şimdi gordum ve bunu denedim ama bunda bir sorun var..
ekrana istedigim gibi yazıyor yan yana..
olusturdugu txt icerisine alt alta sonuç gösteriyor.
ekrana yazdıgını kopyala yapıstır yapamam cunku bekledigim sonuc cok MB tutuyor.
kucuk bir oynama ile kod iş gorur hale gelir.
benim istedigim sonuç şu
1.txt icerisinde alt alta yazılı olan
1
1
1
satırları
2.txt icerisindeki alt alta yazılı olan
2
2
2
satırları ile birleştiginde
3.txt deki sonuç şu olacak
12
12
12
tabi kullanacagım text sayısı 10/15 arası. bu txt lerdeki satır sayısı bazen 1 milyon oluyor.
her txt deki satır sayısıda eşit olacak. yani birisi 1 milyon ise digeride 1 milyon satır.
ilgilendiğin için teşekür ederim.
--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 17:56:14 -->-> Daha önceki mesaj 16:54:42 --
Mert isimli arkadasın dosyası calıŞtı sorunsuz, ama sizin yazdıĞınız kod daha kolay kullanışlı. fakat sonuçları alt alta sıralıyor. ben sonuÇ dosyası oluŞturacak ( txt Şeklinde ) ve yan yana sıralamasını istemiŞtim. olur veya olmaz ilgilendiĞiniz için teŞekkur ederim.
- 25-08-2016, 18:18:08Kimlik doğrulama veya yönetimden onay bekliyor.
<?php for($i=1; $i<=5; $i++){ for($j=1; $j<=100000; $j++){ file_put_contents("test/$i.txt", rand(100,999) . PHP_EOL, FILE_APPEND); } }<?php // [0-9].txt başlangıç dosyası (1.txt) $fFirst = 1; // [0-9].txt sayısını belirler (1.txt, 2.txt, 3.txt..) $fCount = 5; // Dosyalar hangi dizinde ? $d = "./test"; // Çıktı dosyasının adı $fOutput = $d . DIRECTORY_SEPARATOR . "cikti.txt"; if(!file_exists($d)){ exit("Dizin bulunamadi!"); } $afHandle = array(); for($i = 1; $i<=$fCount; $i++){ $p = $d . DIRECTORY_SEPARATOR . $i . ".txt"; if(file_exists($p)) { $afHandle[$i] = fopen($p, "r"); if(!$afHandle[$i]) { exit("$i.txt dosyasi acilamadi!"); } } } while(!feof($afHandle[$fFirst])){ for($i = 1; $i<=$fCount; $i++){ file_put_contents($fOutput, rtrim(fgets($afHandle[$i])), FILE_APPEND); // Memory <3 } file_put_contents($fOutput, PHP_EOL, FILE_APPEND); usleep(50); // CPU <3 } exit("OK");5 adet 100k satır içeren test dosyası oluşturdum ardından tüm dosyaların satırlarını birleştirdim, %1 işlemci kullanımı ve sabit memory kullanımı ile işlem tamamlandı.

