2017-03-20 5 views
0

PHP 코드에 문제가 있습니다. 이 루프는 파일의 마지막 정규 표현식 만 실행하고 파일의 표현식 순서를 변경하고 다른 표현식이 마지막이되면이 마지막 마지막 표현식 만 실행됩니다.foreg의 Preg_replace가 제대로 작동하지 않습니다.

foreach(file('general.txt') as $line) { 
    $text = preg_replace("/" . $line . "/", "", $text); 
} 

파일 general.txt에는 테스트 된 모든 것이 정규 표현식의 행을 포함합니다. 그러나이 루프에서는 더 이상 작동하지 않습니다.

왜 이런지 알 수 있습니까?

foreach(file('general.txt') as $line) { 
    $text = preg_replace("/" . trim($line) . "/", "", $text); 
} 
+1

$ line = file ('general.txt'); foreach에서 $ lines을 사용하십시오. 때로는 foreach가이 물건에 대해 이상합니다. – Edwin

답변

0

을 많이 시도하지만 이유를 파악하지 않았다 file() 함수를 사용하는 경우 줄 바꿈 시퀀스를 제거하는 fopenstream_get_line을 사용할 수 있습니다. 그렇게하기 위해서는 패턴 파일에 사용 된 개행 순서를 알아야합니다. 윈도우 바꿈 순서와 Exemple :

$fh = fopen('patterns.txt', 'r'); 

if ($fh) { 
    $nl = "\r\n"; 
    while (false !== $line = stream_get_line($fh, 2048, $nl)) { 
     $str = preg_replace('/' . $line . '/', '', $str); 
    } 
} 

중요한 장점 trim 이상 : 시작 패턴을 사용하거나 공백으로 종료 할 수 있습니다.

+1

고마워, 이건 내게 고쳐 줬어 :) – Simon

0

을 대신하여 : 나는

감사합니다 ...

사이먼

다음과 같이 당신의 라인을 정돈 할 필요가