2013-10-02 1 views
0

당신은 저를 도울 수 있 었는가. 여기에서 PHP 간단한 돔 파서를 사용하면서 웹 사이트를 긁어 모으려고합니다. http://simplehtmldom.sourceforge.net/간단한 html dom을 가진 꼬리표의 부분을 찾아

문제는 동일한 시작 부분을 가지지 만 같은 결말은 없다는 것입니다.

<div id="postmenu_2861574"> 
    <div id="post_message_2861574"> one posted message </div> 
</div> 
<div id="postmenu_2861617"> 
    <div id="post_message_2861617"> another posted message </div> 
</div> 

모든 태그는 같은 시작 "post_menu"와 "post_message_"하지만 종료 다릅니다 함께 가지고 있습니다 예를 들어이는 구조입니다. 모든 태그를 모르는 상태에서 모든 게시물을 수집 할 수 있습니까? SQL에서 검색 구문의 끝에 % 기호를 사용하는 것과 같은 방법이 있습니까? 간단한 방법으로 작동하지 않았으므로 변수 $ postmenu가 비어 있음을 보여 줬습니다.

foreach($html->find('div#postmenu_') as $postmenu) 
    $item['message'] = $article->find('div#post_message_', 0)->plaintext; 

는 당신이 요구하는 것은 불가능하다 http://www.w3.org/TR/CSS2/selector.html에 따르면, 도움

+0

아니 당신이 지금까지 그 ... 유일한 aproach을 할 수 없습니다가 @Petur 올슨 제안 것입니다 ... 당신이 당신의 DOM의 전체 구조를 제공하지 않는 한, 어쩌면 또 다른 방법은 그것을 할 ... – Enissay

+0

감사합니다 대답을 위해, 나는 다음에 알 것이다.) – Darius

답변

0

주셔서 감사합니다.

게시물 메시지가있는 모든 div를 동일한 클래스로 만듭니다 (예 : class = "post_message".

그럼 당신은 사용이 클래스의 모든 div의를 찾을 수 있습니다

foreach($html->find('div.post_message') ... 

당신이 웹 사이트를 근근이 살아가고 있기 때문에, 성능이 아마 문제가되지 않습니다. 이 경우 모든 div를 찾고 ID가 일치하는지 확인할 수 있습니다.

foreach($html->find('div') ... 
    // retreive ID 
    if (0 === strpos($id, 'post_message_'))) 
    ... 
+0

감사하지만, 처음에는 그들을 바꿀 필요가있다. 나는 div에 불필요한 것들이 많이 있기 때문에 그들을 식별 할 필요가있다. 그리고 나는 올바른 태그를 먼저 찾아야한다. – Darius

+0

아, 나는 오해했다. 웹 사이트를 가져 와서 데이터를 다듬 으려합니다. 이 경우 사용자가 이용할 수있는 데이터 구조가 있는지 확인할 수 있습니다. 예 : 당신의 예제에서 find ('div div')를 할 수 있습니다. 이렇게하면 모든 div가 한 단계 깊게 중첩 된 것입니다. 하지만이 방법이 전체 문서에서 작동하는지 확신 할 수 없습니다. 또는 find ('div')하고 startsWith ($ id, "post_message_")를 수행하십시오. 이 경우에 가장 좋습니다. –

+0

감사합니다 Petur, 당신이 제안한 것처럼 "if (0 === strpos ($ divs-> id, 'post_message_'))". – Darius