Daha sonra PHP ve dizinleri dosyaları bulmak için regex ve regex çalıştırın

1 Cevap php

ne farklı dizinlere metin dosyaları bulmak için en etkili yoludur ve daha sonra bu Bulunan dosyalar için regex çalıştırın. Ben yerel php / komut çalışacaktır.

I benim komut dosyasını çalıştırmak istiyorum ve D nerede \ Senaryo: \: \ Komut \ folder_01, D: \ script \ folder_02, vb ben bu komut dosyaları bakmak istiyorum Diyelim ki D var diyelim. Bu klasör adları mantıklı değildir, onlar bir şey olabilir.

"Oyun türü: xxxxx" Peki, ben her dosyaları ama satırı içeren tek dosyaları bulmak istemiyorum. (Metin dosyaları eşleşen sayısı 150-200 civarında olacaktır)

Ve bu dosyaları bulduktan sonra, ben bir anda bazı preg_replace bir dosyayı çalıştırmak istiyorum.

Teşekkürler.

1 Cevap

Bu yerel çalıştırmak için gidiyoruz eğer, diğer diller muhtemelen daha hızlı ve ya uygulamak daha kolaydır.

Bununla birlikte, bu PHP kullanmak istiyorsanız:

  1. Recursively belli bir dizin aşağıya tüm dosyaların bir listesini yapmak. (Tekrarlamalı bir fonksiyon, scandir (vb) kullanın) .. \ scripts \ foo \ bar vb: \ scripts \ foo ve D: D Yani bu olabilir.
  2. Dosya başına dosyayı ve dosya adını bulduğu tam yolunu kaydedin.
  3. Şimdi, dizi aracılığıyla ve bu dosyayı açan bir işlevi çağırmak bulmak her dosya için yürüyüş istenilen dize için her satırda bir regex yapar ve bu dize bulunursa TRUE döndürür. Işlevi DOĞRU dönerse, ikinci bir dizi yol + dosya kaydedin. Artık istediğiniz dize içeren tüm dosyaların bir listesi var.
  4. , Eğer yapılan ikinci dizi üzerinden yürümek dosyasının başına preg_replace (), dosyayı açar, her satırı okur ve yapar bir işlevi çağırın.

Eğer belirli bir dize bulmak tüm dosyaların bir listesini gerek yoksa adımlar 3 ve 4 birine katlanabilir.

Kodu:

$fileList = giveFileList('D:\scripts\foo');
$selectedFileList = array();
for( $i = 0 ; $i < count($fileList) ; $i++ )
{
    if(stringExistsInFile($fileList[$i]))
    {
        $selectedFileList[] = $fileList[$i];    
    }
}

for( $i = 0 ; $i < count($selectedFileList) ; $i++ )
{
    replaceStringInFile($selectedFileList[$i]);
}