2011-05-15 3 views
1

ignore.txt에 긴 정규식 목록이 있고 include.txt 파일에 다른 긴 목록이 있습니다. include에서 찾은 일치 항목이 캡처되지만 ignore.txt와 일치하는 항목은 모두 제외되도록 sample.html 파일에 포함 된 데이터에 대해 PHP를 사용하여 이러한 항목을 적용하는 가장 빠른 방법은 무엇입니까?PHP에서 정규 표현식 목록 적용

+0

preg_match 및 preg_replace는 배열을 인수로 받아들이고 배열을 통해 표현식 목록을 실행할 수 있습니다. 텍스트 파일을 배열로 튜닝하는 방법은 txt 파일의 형식에 따라 다릅니다. – dqhendricks

답변

1

을 할 수 있도록하는 것, 그리고 한 줄에 하나의 표현이있다 , PHP의 file() 기능을 사용할 수 있습니다. 그러면 각 개별 행이 배열의 요소 인 배열로 파일이로드됩니다. file_get_contents()을 사용하여 sample.html 파일을 문자열로로드 할 수 있습니다.

preg_match() 또는 preg_match_all()preg_replace()가하는 것처럼 실제로 입력으로 배열을하지을한다. foreach 같은 식을 사용하여 표현식 배열을 반복하고 결과를 얻기 위해 일치하는 함수 중 하나에 개별 호출을 적용해야합니다.

내 생각에 preg_match_all()이 가장 적합 할 것입니다. 왜냐하면 처음 파일뿐만 아니라 모든 파일을 전체 파일에서 가져오고 싶어하는 것처럼 들리기 때문입니다. 전체 일치 목록이 있으면 ignore.txt의 데이터를 사용하여 비슷한 방식으로 필터를 적용합니다.

+0

이것은 현재 내가하고있는 일이지만, 각 파일의 각 줄을 반복하는 것과는 달리 생각하지 않은 영리한 방법이 있는지 궁금해했습니다. 감사 – Poe

1

가장 빠른 방법은 정규 표현식을 것 있도록 include.txt 및 ignore.txt 파일을 설치하는 경우 쉘이 작업

$result = `cat sample.html | egrep -f include.txt | egrep -vf ignore.txt`; 
+0

이 답변의 두 가지 문제점 : 1.이 사람이 Windows를 사용하지 않는다고 추측 할 수는 없습니다. 2. 그는 PHP 솔루션을 요청했습니다. –