2015-02-02 2 views
0

Laravel 프로젝트에서 검색 필터를 구현하려고합니다. 현재 WYSIWYG 편집기를 통해 페이지의 모든 내용을 저장하고 있으므로 지금 직면하고있는 문제는 데이터베이스에서 검색하는 페이지의 내용에 "p"태그 만 가져 오는 방법입니다. 이미 몇 가지 시도했지만 아무것도 작동하지 않습니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까? 여기에 지금까지 시도하고 무엇 :PHP에서 태그 이름으로 요소 가져 오기

<div id="page-content" class="container"> 

    @foreach($searchResults as $searchResult) 
    <div class="searchResult_div col-xs-12"> 

     <div class="col-xs-9 col-sm-10 search-result-body"> 

     <?php 
     $sr = HTML::decode($searchResult['body'], 450, "..."); 
     $dom = new DOMDocument(); 
     @$dom->loadHTML($sr); 
     $sr_text = $dom->getElementsByTagName("p"); 

     echo $sr_text; 
     ?> 

     </div> 

    </div> 
    @endforeach 

</div> 

오류 : 클래스 DOMNodeList의 객체가 문자열로 변환 할 수 없습니다 (보기 :/사용자/ruirosa/문서/AptanaStudio3Workspace/Marave4/응용 프로그램 /보기/검색/검색 .blade.php)

+2

당신이'위해서 var_dump ($의 sr_text)를 '시도? "PHP에서 DOM 요소의 콘텐츠 가져 오기"를 검색해 보셨습니까? 만약 당신이 이것을 찾으 셨다면 - http://stackoverflow.com/questions/6859527/how-to-get-tag-content-using-domdocument – Styphon

+0

Styphon에게 감사드립니다. –

답변

0

작동 될 것이다 :

<?php 

$html = <<<HTML 
<!DOCTYPE html> 
<html> 
<head></head> 
<body> 
    <div id="container"> 
     <p>text content</p> 
     <section> 
      <div> 
       <p>inner text</p> 
      </div> 
     </section> 
    </div> 
</body> 
</html> 
HTML; 


$dom = new DomDocument(); 
@$dom->loadHTML($html); 
$para = $dom->getElementsByTagName('p'); #DOMNodeList 


if ($para instanceof DOMNodeList) { 
    foreach ($para as $node) { 
     # $node is a DOMElement instance 
     printf ("Node name: %s\n", $node->nodeName); 
     printf ("Node value: %s\n", $node->nodeValue); 
    } 
} 

출력 : 또한
enter image description here

, "$의 sr_te로 xt "는 iterable/traversable 개체로 출력 할 수 없습니다. 당신은 그것을 반복해야합니다.

는 문서를 읽기 :

The DOMNodeList class
Traversable Interface
Interface NodeList (from W3C WD-DOM-Level-3)

관련 문제