2010-06-29 7 views
1

eregi 정규 표현식을 PHP 5.3/6.0 컴파일 용 preg_match으로 포팅해야합니다. PHP의 정규 표현식에 대한 도움이 필요합니다.

내가 도움이 필요 내 정규 표현식 이식 기술에 너무 확신 아니에요 이후

...

# 1

올드 버전 :

if(eregi('foo',$myVar)) { 
    $aresult = explode('/',stristr($myVar,'foo')); 
    $aversion = explode(' ',$aresult[1]); 
} 

새로운 버전 :

if(preg_match('/Foo\/([^ ]*)/i',$myVar,$matches)) { 
    $aversion = $matches[1]; 
} 

# 2

올드 버전 :

if(eregi('bar',$myVar) && ! eregi('rv:[0-9]\.[0-9]\.[0-9]',$myVar)) { 
    $aresult = explode('/',stristr($myVar,'bar')); 
    $aversion = explode(' ',$aresult[1]); 
} 

새로운 버전 :

//Not done yet need help 

답변

1

두 번째 조각은 단지 추가 조건, 거의 처음과 동일합니다. 실제 코드 (또는 작동 방법)가 제시된 코드와 약간 다를 것이라고 추측 할 것입니다. 그렇다면 그 차이점을 상세히 설명해 주시겠습니까?

어느 쪽이든, 귀하의 # 2는 # 1과 유사 할 수 있습니다.


if (preg_match('~bar/([^ ]*)~i', $myVar, $match) && ! preg_match('/rv:[0-9]\.[0-9]\.[0-9]/', $myVar)) { 
    $aversion = $match[1]; 
} 
이상하게 보일 수도 delimiters~의 사용; 이 정규 표현식에는 가장 일반적인 구분 문자 ( /)가 포함되어 있으므로 질문에서했던 것처럼 슬래시를 이스케이프 처리하는 대신 대체 방법이 사용됩니다.

+0

# 1과 # 2는 (아직 유사한) 여러 가지 문제입니다. 이미 # 1을 이식했지만 구현 방법을 잘 모르겠습니다. # 2를 위해서, 나는 그것을하기 위해 도움이 필요할 것이다. – AlexV

+0

현재 답변으로 # 2가 # 1과 비슷한'preg_match' 사용 스 니펫으로 번역되었습니다 (괜찮습니다). 특정 문제, 문제 또는 해결하려는 문제가있는 경우 자세히 설명하십시오. 그것이 그대로, 당신이 묻고있는 것처럼 보이는 것을했습니다. – salathe

+0

당신의 대답에 단지 어떤 질문 (bar, bar, bar ...)이라도 "bar"를 넣을 수 있습니다 (beasause ~ i). – AlexV

관련 문제