2010-06-27 5 views
1

빠른 질문이 있습니다.파일에 문자열이 포함 된 줄 수를 계산하는 우아한 방법

제목에서 알 수 있듯이 PHP에서 지정된 문자열이 포함 된 줄 수를 셀 수있는 방법을 찾고 싶습니다.

나는 단순히 파일을 열고 모든 줄을 반복해서 볼 수 있으며, 일치하는 항목이 있는지 알 수는 있지만 혼란스러워 보인다. 더 좋은 방법이 있습니까? 더 내가하고 싶은 것을 설명하기

, 여기가 AWK와 함께 볼 수있는 방법은 다음과 같습니다

awk '/KEYWORD/ {i++} END { print i }' FILE 

감사합니다!

답변

1

이 거의 나에게 "성가신"보인다 :

$c = 0; 
foreach(file($filename) as $line) 
    if (strpos($line, $str) !== false) ++$c; 

당신은 정규 표현식 멀리 얻을 수 있지만, 당신이 진정으로 (인스턴스 반대) 라인을 계산하려면, 반드시 거기에 수를 위의 방법보다 더 깔끔한 방법은 아닙니다 (간결성과 명확성 측면에서).

편집, 최초의 코멘트 당 :

echo substr_count(file_get_contents($filename), $str); 

작동합니다 그.

+0

줄을 원하지만 파일이 들어갈 형식이 있으므로 인스턴스를 계산해도 차이가 없습니다. – houbysoft

+0

그러면'file_get_contents()'에서'substr_count()'또는'count (preg_match_all())'를 사용할 수 있습니다. 이 모든 방법은 전체 파일을 메모리에로드하므로 대용량 파일에는 적합하지 않습니다. – Matthew

+0

dvcolgan의 답변보다 편집이 간단하기 때문에 허용 된 답변이 변경되었습니다. 감사. – houbysoft

0

500MB +와 같이 어리석은 거대한 파일로 실행할 때 file()이 중단된다는 것을 알아 두십시오. 거대한 파일 크기를 계산하는 많은 동시 사용자와 같이 웹 응용 프로그램에서 이것이 일반적인 경우 성능에 영향을줍니다.

관련 문제