2013-02-03 2 views
0

가능한 중복 : 나는 파일에서 어떤 패턴을 교체하는 것보다 텍스트를 읽기 위해 노력하고
How to replace text over multiple lines using preg_replacepreg_replace이다 여러 라인 (PHP)

. patern을 하나의 문자열에서 대체하려고하면 파일에 여러 개의 문자열이 있으면 작동하지 않습니다.

$ this-> session-> set_flashdata ('error_message', 'Naslovna vrstica je bila uspešno shranjena');

대체물을 대체하려고하는 텍스트의 예입니다.이 줄만 사용하면됩니다. 그러나 파일에 다른 줄이 있으면 모두 일치합니다.

$content = file_get_contents("C:\Users\Borut\\test.txt"); 
$pattern="/^.*session->set_flashdata\((.*),(.*)\);$/"; 
$replacement="\$_SESSION[$1]=$2"; 

이것은 내 코드입니다. 어떻게 위의 그림과 같이 여러 문자열을 대체합니까?

+1

수정자를 제거하지 않아도된다는 것을 알 수 있습니다. 테스트 패턴을 제공하면 패턴에 '시작'및 '종료'점이있는 것처럼 보입니다. 잘 작동하지만 여러 사건을 대체하려는 경우 정의 된 시작점이나 끝점이없는 패턴을 계속 찾을 수 있도록 수정해야합니다. 즉, 패턴이'/ session-> set_flashdata \ ((*. *), (. *) \)와 비슷해지기를 원합니다. ' – Jon

답변

1

원하는 수정자가 m입니다. 당신은 가장 쉽고 더 나은 정규식 솔루션은 거기에 어떻게

"/\$this->session->set_flashdata\((.*?),\s*(.*?)\);/" 

공지 될 것이라고 말했다 모든 수정 here 를 찾을 수 있습니까? 각. * 뒤에. 이것은 당신과 마찬가지로 욕심을 맞추는 것입니다. ^$

+0

줄 바꿈을 제외하고 배제 ^와 $ 중. 이해가 안되니? 하지만, 제로 요소를 돌 보지 못합니다. –

+0

예, 가능하면 일치합니다. 페이지 아래쪽 절반에 대해 어떻게 작동하는지 http://www.regular-expressions.info/repeat.html을보십시오. 또한,'/ m'은 내가 의미했던 것입니다. 위의 내 대답을 업데이트했습니다. –