2011-11-03 6 views
0

다른 div를 포함하지 않는 'div'-s (내용 포함) 만 얻는 방법을 알아낼 수 없습니다.preg_match : div가 포함되지 않은 div-

예를 들어

:

<div id='first'> 
    ... 
    <div id='second'> 
     ... 
    </div> 
</div> 
<div id='third'> 
    ... 
</div> 

그리고 그들은 다른 div에 포함되지 않기 때문에 나는 단지 '초'와 '세번째'div의 '콘텐츠, 여는 태그와 닫는 태그가 필요합니다.

이 패턴을 시도했습니다 : ~(<div id='[a-z].+')(.*?)(</div>)~s 하지만 괜찮습니다.

나는 분명히 희망을 ... 사전에 감사드립니다 !!

+0

다른 하나는 정규 표현식을 사용하여 구문 분석 할 수 없습니다 – k102

+0

불가능합니다. 죄송합니다. – FailedDev

답변

1

rexex를 사용하여 HTML을 추출하는 방법에 대해 나치가 아니지만 xpath와 DOM을 사용하면이 문제를 훨씬 쉽게 처리 할 수 ​​있습니다.

$dom = new DomDocument(); 
$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
$divs = $xpath->query("//div[not(div)]"); 

코드를 테스트하지 않았습니다. 그러나 핵심 부분은 div 자식 노드가없는 모든 div를 찾는 not 연산자입니다.

+0

답변 해 주셔서 감사합니다. 예, xpath를 사용하면 더 쉬울 것입니다. 물론 정규식을 사용하는 방법을 알고 싶습니다. – user527584

+0

가능한지 확실하지 않습니다. 어쩌면, 그러나 그것은 매우 복잡 할 것입니다. xpath의 문제점은 PHP에서 사용하기가 매우 쉽습니다. 필요한 정보를 모두 SO에서 검색하면됩니다. – georgiecasey

+0

아무 문제가 없습니다, 방금 regexp 함께 할 수있는 경우 관심이있었습니다. 다시 한 번 감사드립니다. 나는 xpath를 사용하고있다! – user527584

관련 문제