PHP'de unix/linux sistemlerinde grep -f dosya adı veren bir işlev var mı. Hiçbiri yoksa, PHP işlevleri/araçları bunun için özelleştirilmiş bir yöntem/işlev oluşturmaya yardımcı olur. Teşekkürler!grep with -f gibi PHP'de
cevap
Aslında IMHO, ben aşağıdaki söyleyebilirim:
$result = preg_grep($pattern, file($path));
preg_grep
Docs ve file
Docs bakınız. Eğer dosya kümesi üzerinde ki (yinelemeli) yapmak gerekirse
, ayrıca glob
ve foreach
ya da (Recursive
) DirectoryIterator
veya GlobIterator
Docs değil RegexIterator
Docs unutmak yoktur.
Örnek SplFileObject veRegexIterator ile:
$stream = new SplFileObject($file);
$grepped = new RegexIterator($stream, $pattern);
foreach ($grepped as $line) {
echo $line;
}
Çıkış ($ deseni içeren $file
her hat):
$grepped = new RegexIterator($stream, $pattern);
foreach ($grepped as $line) {
echo $line;
}
Gösteri: https://eval.in/208699
file_get_contens() işlevini, bir dosyayı ve bir regex kullanarak içerikleri yakalamak için preg_match_all() işlevini açabilirsiniz.
$file = file_get_contents ('path/to/file.ext');
preg_match_all ('regex_pattern_here', $file, $matches);
print_r ($matches);
'file_get_contents()' ı kullanıyorum ama aralıklı olarak başarısız oluyor. – FractalSpace
Bu işlev eşdeğer olsa da, komut satırı grep'i değil, tüm dosyayı belleğe yükler. – cmc
@ cmd: Evet, hafızayı kaydetmek istiyorsanız, lütfen [** SplFileObject **] (http://php.net/SplFileObject) ve [** RegexIterator **] (http://php.net/ RegexIterator). – hakre
iyi geliyor! ... elinizde preg_grep ($ pattern, file ($ path)) için bir yer değiştirme yedeği olan bir örnek olmaz mı? – cmc