从mysql text datatype列获取所有<h2>标签和<p>标签文本</p> </h2>

时间:2014-08-13 09:32:43

标签: php mysql dom

我正在尝试从数据库中拆分和获取p标签和h2标签文本。我试过以下代码。它只返回第一个结果。例如,在我的数据库中,我有

<h2>india</h2><p>country</p><h2>dravid</h2><p>cricket player</p>

我想分别获取h2结果和para结果。但是下面的代码只返回h2和para结果。如何从数据库中获取所有h2标签和p标签文本?

$getdata = $res['review_content'];
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($getdata); // loads your html
$xpath = new DOMXPath($doc);
$heading = $xpath->evaluate("string(//h2/text())");
// paragraph text
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($getdata); // loads your html
$xpath = new DOMXPath($doc);
$paragraph = $xpath->evaluate("string(//p/text())");

当我尝试echo $heading时,它仅返回印度。但我想展示印度和Dravid

3 个答案:

答案 0 :(得分:1)

尝试以下代码,它将首先将html解析为对象,

然后我们按照标记名getElementsByTagName搜索特定元素,并通过textContent函数获取标记的内容

            <?php


               $getdata = '<h2>india</h2><p>country</p><h2>dravid</h2><p>cricket player</p>';
                $doc = new DOMDocument();
                libxml_use_internal_errors(true);

                $pTag = array();
                $h2Tag= array();
                $xmlDoc = new DOMDocument();
                $xmlDoc->loadHTML($getdata);    
                $searchNode = $xmlDoc->getElementsByTagName("p");

                 foreach($searchNode as $d){
                   $pTag[] =  $d->textContent;
                 }

                $searchNode = $xmlDoc->getElementsByTagName("h2");

                 foreach($searchNode as $d){
                   $h2Tag[] =  $d->textContent;
                 }

                // pTag[] contain array of content all p tag                    
                // h2Tag[] contain array of content all h2 tag                  
            ?>

答案 1 :(得分:0)

您可以使用getElementsByTagName功能。

示例:

$h2 = $doc->getElementsByTagName('h2');
$p = $doc->getElementsByTagName('p');

答案 2 :(得分:0)

您应该尝试使用此代码,它将帮助您获得所需的结果。

$db_string=html_entity_decode($file_contents);


    $doc = new DOMDocument();
            $doc->loadXML( $db_string );//string goes here from database
            $para= $doc->getElementsByTagName( "p" );
            $a= $doc->getElementsByTagName( "a" );
            foreach($para as $p_tag){
                $para_values = $p_tag->item(0)->nodeValue;
            }
            foreach($a as $a_tag){
                $a_values = $a_tag->item(0)->nodeValue;
            }