2012-02-09 5 views
1

가능한 복제를 레그 :
Function ereg_replace() is deprecated - How to clear this bug?PHP의 EREG와

나는 다운로드 PHP 클래스

에서
ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3); 

을이 같은 스크립트를 지금은 오류가 사용되지 않는 기능을 던졌습니다 얻었다.

어떻게하면 preg 또는 preg 일치 항목으로 바꿀 수 있습니까?

+0

하면 (이 EREG 변경 – niksmac

+0

HTML 태그를 교체하여 '^ ([^ = *) = "\']? ([^"\ '*) "\']? $ ', $ ", $ v, $ a3); ~ preg_match ("/^([^ =] *) = [ "\ ']? ("^ " $ a3); –

답변

1

시도 :

preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/', $v, $a3); 

그들은 매우 유사하다. PREG는 패턴 안에 플래그를 포함하고 EREG는 플래그를 포함하지 않습니다. 이런 이유로, PREG는 패턴의 시작과 끝 부분에 구분 기호 char을 필요로합니다 (나는 /을 사용했습니다). 사실, 패턴 후 플래그 레그 검색, 예를 들어, 대소 문자를 구분하지 일치 당신이 i 플래그를 추가해야합니다 :

preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/i', $v, $a3); 
1

가장 큰 차이점은 정규 표현식은 특정 문자로 시작해야하며 끝내야한다는 것입니다. 그래서// #로 정규 표현식을 시작하고 끝내면 괜찮을 것입니다. 그것의 외관에서 나는 양립 할 수없는 것을 보지 못했다. 한번 해봐.

0

back references을 사용하는 것이 좋습니다. 귀하의 표현은 foo="bar'과 일치하지만 foo="bar'baz"은 일치하지 않습니다.

#^([^=]*)=(["\']?)([^\2]*)\2$#