문제

PHP를 통해 모든 "dev"태그와 각각의 콘텐츠를 포착하고 싶습니다. preg_match_all() 그러나 중첩 된 것을 얻을 수 없습니다.

데이터:

<dev>aaa</dev> <dev>bbb</dev> <dev> ccc <dev>ddd</dev> </dev>

지금까지 내 표현 :

|<dev>(.*)</dev>|Uis

도움을 주셔서 감사합니다. b.

도움이 되었습니까?

해결책

구문 분석을 위해 정기적 인 표현을 사용하지 마십시오. 실제 파서와 같은 것을 사용하십시오 domdocument 또는 단순 렉스:

$xml = simplexml_load_string('<root>'.$str.'</root>');

다른 팁

재귀 적 일치 패턴이 필요합니다.

/<dev>(.*|(?R))<\/dev>/i

그것은 단지 중첩 된 요소를 빨아 들일 것이므로, 당신이 그것들을 구문 분석하고 싶다면, 당신은 $ matches에서 다시 함수를 실행해야합니다 [1

그만큼 * 탐욕스러운 운영자이며 가능한 많은 캐릭터를 소비합니다. 당신은 사용해야합니다 *? 대신 가장 작은 경기를 찾기위한 비가비 버전. 아마도 Regexes가이를 수행하기에 가장 좋은 도구가 아닐 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top