2011-11-30 2 views
1

특정 Linux 서버에서만 발생하는 문제가 있습니다. 자사의 CentOS 5.7 Apache 2.2 PHP 5.33 서버가 기록을위한 것입니다.PHP preg 함수가 html 구문을 해석하지 않습니다.

나는 preg_ 함수를 사용하여 템플릿 파일의 HTML 주석으로 된 루프를 구문 분석하는 PHP 템플릿 클래스를 사용하고 있습니다. 예제 파일 :이 나에게 이름이 "장소"분기를 제공한다

$found = preg_match("/(?i)<!--(if|begin) ([a-zA-Z0-9_.\->!%<>= ]+)-->/u", $template, $aTag, PREG_OFFSET_CAPTURE, $position); 

:

<!--if place--> 
     {place} 
    <!--else place--> 
     Nothing 
    <!--endif place--> 

이 내가 사용하는 명령입니다.

로컬 및 다른 모든 환경에서이 브랜치는 if 분기를 올바르게 구문 분석하지만 구문 분석을하지 않고 내 경우에는 var {place}와 문자열 없음.

내가 말한 것처럼 로컬 Windows -> WampServer 컴퓨터에서 작동합니다. 그것은 다른 리눅스 머신에서 작동하며 CENTOS 머신에서도 작동합니다.

이 컴퓨터가 HTML 주석 태그를 PHP 스크립트에서 구문 분석 할 수없는 것처럼 보입니다. 그게 가능하니?

미리 감사드립니다. 모든 의견을 크게 환영합니다.

+0

무엇을 인식하지 못합니까? – greg0ire

+0

시도한 코드는 무엇입니까? –

+0

어떤 정규식을 사용하고 있습니까? MB가 활성을 재정의합니까? – Criss

답변

0

당신은 여러 매칭 모드를 강제로 표현 "의"수정을 추가해야합니다

"/(?i)<!--(if|begin) ([a-zA-Z0-9_.\->!%<>= ]+)-->/s" 

을하고 난 당신이 "U"전혀 사용할 필요가없는 100 % 확신한다.

+0

그것을 시도 사용할 수 – Tschef

0

누구에게나 이것도 올 수 있습니다.

2006 년부터 PCRE 라이브러리가있는 plesk 컴파일 PHP 버전 (5.3.3)입니다! 기본적으로 구문 분석에서 모든 HTML 태그를 무시했습니다.

그래서이 문제가 발생하면 일부 내용이 파싱되고 일부 내용은 PCRE 확장 날짜에 대한 phpinfo를 확인하지 않습니다.

관련 문제