2012-03-12 2 views
0

이상한 문제 ...정규식이 일치하지 않습니까? 문제를 인코딩 하시겠습니까?

텍스트를 복사하여 내 스크립트 (문자열 변수)에 넣으면 정규식이 성공적으로 일치합니다. 그러나, file_get_contents를 사용하여 (인터넷에서) 문서에 접근 할 때, 그렇지 않습니다.

인코딩과 관련이 있습니까? 문서는 ISO-8859-1이지만 utf8_encode를 통해 utf8로 변환되었습니다.

문자열 변수는이 utf8 인코딩 출력에서 ​​생성됩니다.

그것은 간단한 정규식도있다 :

if (preg_match_all('/<h3 align=center><A NAME="([^"]*)"><\/A>(.*)<\/h3>(.*)::break::/isUu', $contents, $matches, PREG_SET_ORDER)) { 

모든 아이디어를 어떻게 잘못 될 수 있을까?

+1

복사/붙여 넣기 변수의 var_dump를 실행 한 다음 file_get_contents의 내용을 비교하여 차이가 있는지 확인하십시오. – anubhava

+0

browser/wget을 사용하여 파일을 열고 인코딩을 확인하십시오. 어쩌면, 그것은'utf-8'에서 반환되지만'iso-latin-1'에 수동으로 저장하면됩니다. – kirilloid

답변

0

이것은 인코딩 때문이 아니라 backtrack_limit에 도달했기 때문입니다. 다음으로 설정 재정의

(10 만에서 최대)

ini_set('pcre.backtrack_limit', '1000000'); 

이 문제를 해결합니다. PHP 5.3.? 또한이 값을 가지고있어서 정말 큰 숫자가 아닙니다.

관련 문제