2012-03-27 5 views
1

정규 표현식을 전혀 사용하지 않고 몇 가지 질문이 있습니다.PHP preg_match() - 정규식이 막연합니까?

기본적으로 나는 사용자 지정 태그 사이에 텍스트를 반환하는 간단한 클래스를 만들었습니다.

function getData($tagname){ 
    $this->tagname = $tagname; 
    $string = $this->dump; 
    $pattern = "/<$tagname>(.*?)<\/$tagname>/s"; 
    preg_match($pattern,$string,$matches,PREG_OFFSET_CAPTURE); 
    print_r($matches); 
} 

이 정보는 필자에게 필요한 정보를 제공하지만 배열의 여러 복사본을 반환합니다. 이유는 무엇인지 궁금합니다. 예를 들어

$depData->getData('departureTime'); 

반환

Array ([0] => Array ([0] => 2012/03/07 12:45:13 [1] => 41) [1] => Array ([0] => 2012/03/07 12:45:13 [1] => 56)) 

임 그 무언가가 내 정규식이 모호한에있는 함께 할 생각?

+2

일치하는 입력을 붙여주세요. – socha23

+0

Gorouck 2012/03/07 12:45:13 cosmicsafari

+0

. 'Array [1]'에서'Array [0]'과'2012/03/07 12 : 45 : 13'에' 2012/03/07 12:45:13 . –

답변

1
이것은 먼저 2 개 결과를 제공주는 전체 expresion <tag>(.*?)</tag> 두 번째 결과를가요

은이 차이를 볼 수 있도록(.*?)

는 또한 I는 예를 만든 괄호 결과입니다 첫 번째 캡처 (전체 표현) 및 괄호 캡처 (사용자의 serach).

http://xrg.es/#1ompqhf

참고 : 당신이 더 명확하게 다른 무엇을 볼 수 있도록 나는 "<>을 대체했다.

+0

정규 표현식에 실마리가 없다고 말했듯이 어떻게이 문제를 해결할 수 있습니까? – cosmicsafari

+0

아무런 문제가 없습니다. 첫 번째 결과를 얻는 것뿐입니다.식이 발견 된 곳이 마음에 들지 않으면'PREG_OFFSET_CAPTURE' 매개 변수를 제거하십시오. – SERPRO

+0

+1 결과 중첩 배열은 약간 짜증나지만, 그것은 일치 색인을 추가하는'PREG_OFFSET_CAPTURE' 옵션에서 온 것입니다! – stema