2012-08-06 5 views
0

PHP 스크립트를 사용하여 파일 내의 텍스트 블록을 제거하는 데 몇 시간 씩 걸렸습니다.PHP를 사용하여 파일에서 여러 줄 제거

텍스트 줄을 삭제할 수 있지만 텍스트 블록은 삭제할 수없는 옵션이 많이 있습니다. 나는 preg_replace ("/^$start.*?$end/s", $replace, $fdata)을 다음과 같이 사용하려고 시도했지만 작동하는 해결책을 찾지 못했습니다.

누군가 이미이 작업을 수행 했으므로 도움이 될 것입니다.

$start = "# Copyright 2000-"; 
$end = "Agreement."; 

# This software product may only be used strictly in accordance 
# with the applicable written License Agreement. 
+6

작성중인 소프트웨어인가요? 아니면 도용하려는 소프트웨어입니까? – Matt

+1

이제는 그에게 의심의 여지를 주자. 자신의 소프트웨어를 공개하거나 소프트웨어 회사가 작성한 소프트웨어에 대한 라이센스를 업데이트 할 수 있습니다. – VoronoiPotato

+0

@VoroniPotato 절대로! – Matt

답변

5

당신은 multi-line mode (/m), 그렇지 않으면 정규식 여러 줄에 걸쳐 캡처하지 않습니다 필요합니다. 또한, 당신이 그렇지 않으면 당신은 원하지 않는 결과를 얻을 수 preg_quote()으로 정규식 매개 변수를 탈출한다 ($end, 예를 들어, 당신이 그것을 하나의 기간을 일치시킬 때, 정규식 메타 문자 인 점을 가지고 있습니다.)

$regex = "/^" . preg_quote($start, '/') .".*?". preg_quote($end, '/') . "/sm"; 
preg_replace ($regex, $replace, $fdata); 
관련 문제