2014-07-10 1 views
1

simplehtmldom은 내부 콘텐츠 (속성 아님)가 $_POST 값과 동일한 DIV를 찾을 수 있습니까? 값은 $_POST 값으로 simplehtmldom 주어집니다에 대해 비교되는 -내부 콘텐츠를 찾기 위해 simplehtmldom 사용

나는의 내부 내용으로 DIV이 페이지가 FWRITE를 사용하여 수정하기 전에 John doe 이미 존재하지 않는 말할 수 있는지 확인해야합니다. 이것의 아무도는 데이터베이스를 통과하지 못한다. 그리고 내가 이것을 012ITYdoc의 다음에 미안하게 여기는 것을 놓친다면, 나는 그것을 보지 못했다.

그 가정 : $_POST['data'] = "John Doe"; 현재 페이지가 있습니다

<div id="aaa"> John Doe </div> 
<div id="bbb"> Jane Doe </div> 
<div id="ccc"> Mike Doe</div> 

일 다음이 내부 내용 "John Doe"DIV을 찾을 것인가?

$html = file_get_html("$_SERVER['PHP_SELF']"); 
$result = $html->find("$_POST['data']"); 
if ($result !=="") {do this....} else {do this instead...} 
+0

JS와 함께이 작업을 수행하지 마십시오. –

+0

콘텐츠가 있는지 여부에 따라 수행해야하는 PHP 처리가 여전히 있습니다. 과거에는 JS 값을 PHP로 전달하지 못했습니다. 하지만 난 당신의 제안을 살펴 보겠습니다 simplehtmldom 실 거예요. 감사합니다 – DMSJax

답변

1

예, 태그 안에 텍스트를 가져 오는 것과 관련된 문서에 있습니다. ->innertext 마법 속성을 사용해야합니다. stripos()을 사용하여 특정 값이 존재하는지 확인하십시오.

예 :

$found = false; 
foreach($html->find('div') as $div) { 
    if(stripos($div->innertext, $_POST['data']) !== false) { 
     $found = true; 
    } 
} 

if($found) { 
    // john doe exists 
} else { 
    // he doesn't exist in each div 
} 

내 개인적인 취향 :

$dom = new DOMDocument(); 
$dom->loadHTMLFile('your_url'); 
$xpath = new DOMXpath($dom); 
if($xpath->query('//div[contains(., "'.$_POST['data'].'")]')->length > 0) { 
    // john doe is there 
} else { 
    // john doe isn't 
} 
+0

흠, 나는 정말로 simple_html_dom을 사용하여 계산하는 것으로 생각하지 않습니다 – pguardiario

+0

@pguardiario 일견 언뜻보기에는 답이 가장 좋고 인라인과 비슷한 것으로 보입니다. 그러나 어떻게했는지에 관계없이 PHP 오류보고가 계속 발생했습니다. advanced_html_dom.php에서 - KEvins 답변이 효과가 있기 때문에 나는 그것을 받아 들였습니다. 비록 간단하지는 않지만/advance_html_dom – DMSJax

1

간단한은 할 수 없습니다. this one으로 전환하여 다음을 수행 할 수 있습니다.

$html->find('div[text=" John Doe "]', 0); 
+0

이걸 잘 보여줘요. 이걸 처음 보았습니다. 그 방법으로, 문서에 대한 링크가 있습니까? 나는 이것에 대해 더 알고 싶다. 이 사람의 저자? – user1978142

+0

문서는 드롭 인 대체품이기 때문에 동일 할 것입니다.하지만 문서화되지 않은 이런 것들이 있습니다. 최상의 문서는 [w3c css specs] (http://www.w3.org/TR/selectors/)이어야합니다. – pguardiario