2012-05-16 3 views
0

에서 특정 XML 속성을 가져 오기 :정규 표현식 : 나는 다음과 같은 형식의 문서가 특정 XML 요소

<scheme attr1="lorem" attr2="ipsum" global-test="text goes here" global-attr2="second text goes here"> 
</scheme> 

나는 global-(.*) 일치하는 모든 속성을 추출하는 정규 표현식을 사용하고 싶습니다. "scheme"요소에서만 일치 할 수도 있으므로 (global-([^=]*)="([^"]*)")+과 같은 간단한 정규식을 사용하는 것은 옵션이 아닙니다. 나는 다음과 같은 정규 표현식 시도 :

<scheme.*([\s]+global-([^=]*)="([^"]*)")+ 

을하지만 이것은 단지 "글로벌 ATTR2"에 일치하고 * 선택의 일환으로 다른 전역 속성을 볼 수 있습니다.. * 선택기를 켜기 만하면됩니다. * 게으른 것도 도움이되지 않습니다.

정규식을 사용하여 XML 문서에서 데이터를 가져 오는 것이 좋은 방법은 아니지만이 스크립트는 전처리 기용입니다. XML을 구문 분석하기 전에 XML을 수정합니다.

답변

0

preg_match_all은 모든 것을 일치시키고 모든 것을 저장합니다. "< 계획"에 대한 그래서 첫 경기가 일치하는 경우, 그리고, 다음

/global-(.*?)=(\w+)/ 

처럼 뭔가에 대한 preg_match_all 일치를 실행 한 다음 등 matches[0], matches[1]에서

를 추출
0

저는 (...) + 구문이 예상대로 작동하지 않는다고 생각합니다. 일치 그룹 배열을 확장하는 대신 이전 일치 항목을 제거하고 마지막 항목 만 저장합니다.

(.) *에 대해 뭔가 일치하는 것을 시도하고 PHP 설정에 맞는 지 확인하십시오.

은 내가 (...) + 다르게 행동하면 일을한다고 생각
<scheme(.*?[\s]+global-([^=]*)="([^"]*)")+ 

을 시도했다.

관련 문제