2014-06-24 3 views
0

에서 캡처하지 라인.PHP를 반환 내가 같은 파일이 테스트 정규식

2341 92 
2206 100 
2594 15 

그러나 이것은 전체 행을 반환합니다. 왜 당신이 여러 줄 문자열 입력의 각 라인에 ^$ 일치를 만들기 위해 사용되는 /m 플래그를 취할 필요 나에게 $1

$file_contents = file_get_contents("count.txt"); 

$file_contents = preg_replace("/2341\t(\d+?)/m", "$1", $file_contents, 1); 

echo $file_contents; 

답변

2

를 제공하지 않습니다. 또한 \t 대신 \s+를 사용 정규식 패턴과 일치하지 않을 수 있도록

preg_replace("/2341\s+(\d+)/", "$1", $file_contents, 1); 
2

파일은 공백이 아닌 탭이 있습니다. 대신 \s+을 사용하십시오 (탭을 포함하여 모든 종류의 공백 문자와 일치합니다).

^2341\s+(\d+)$ 

당신은 를 교체 정말 , 원시 텍스트 중 뭔가를 추출하고, 그래서 preg_match()이 작업에 더 적합 할 수 있습니다.

preg_match("/^2341\s+(\d+)$/m", $file_contents, $matches); 
echo $matches[1]; 
+0

을하지만 메모장에있는 모든 문자를 표시 할 때 ++ 나는'2341 [탭] 92CRLF' – 1252748

+0

@thomas가 실제로 볼 : 여기 preg_match()와 함께 사용할 수있는 방법은 복사 및 붙여 넣기 오류가 될 수 있을까? 나는 공백을 대신 본다. 어쨌든 정규 표현식은 둘 다 작동해야합니다. 차이점은 다음과 같습니다. [탭 포함] (http://regex101.com/r/oZ0zW9) - [공백 포함] (http://regex101.com/r/lH7vR4). –

관련 문제