2014-12-11 2 views
2

포함하고있는 파일을 검색하고 싶습니다. 여러 줄로 구분 된 여러 단어와 문자, 여러 행에, preg_grep 사용, 특정 문자열 포함, 변수로 저장. 그런 다음 일치하는 줄을 통해 "for 루프"를 검색하고 또 다른 문자열을 검색합니다.PHP- 루프에서 배열의 문자열 검색

예를 들어, 파일에서 변수 $a (Array?)과 일치하는 모든 행을 포함하고 해당 변수를 포함하는 9 개의 행을 반환한다고 가정합니다. 어떻게

$c = preg_grep("/\b$a\b/", $o); 

그래서 나는 변수 $b을 찾기 위해 $c을 통해 루프를 시도하고 처음에

for ($i = 0; $i < $max; $i++) { 
    $st = preg_grep("/\b$b\b/", $c); 
    echo implode($st, ' '); 
} 

일치하는 라인을 인쇄하고자 여기

$max = sizeof($c);  // In this example contains 9 

$max = sizeof($c) 설정 검색 결과에 implode($c, ' ')이 표시되면 9 개의 값이 하나의 단색 문자열로 표시됩니다. 그것은 내 루프 후 동일한 기술을 사용하여, 나는 원하는 결과를 얻지 못하는 것 같지만 두 변수를 모두 일치시키는 결과 인 단일 행입니다.

또한이 작업을 훨씬 쉽게 수행 할 수있는 방법이 있지만이 예에 따르면 어디에서 실수하고 있습니까?

편집 도움이된다면, 텍스트 파일의 샘플 :

13 04000 Atlanta city GA 394017 +33.762900 -08.4422592 
13 56000 North Atlanta CDP PA 27812 0000000147 +33.862550 

경우 $의 C = preg_grep ("/ \ B $ A \ B를 /", $ 오) 두 줄 일치하는 것 그리고 이상적으로, $ B는 = PA는 두 번째 preg_grep은 yeild 할 경우 : 이것은에서 요소의 배열을 줄 것이다

$result = preg_grep("/\b$b\b/", preg_grep("/\b$a\b/", $o)); 
echo implode(" ", $result); 

:

13 56000 North Atlanta CDP PA 27812 0000000147 +33.862550 

답변

2

$o 가정하면 라인의 배열입니다 $a$b이 모두 일치하는 $o

+0

$ o는 $ o = file (foo.txt)로 읽습니다. – swam

+0

이것은 간단하게 잘 작동하여 거의 눈물을 흘 렸습니다. – swam