我正在尝试从数据库中拆分和获取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
答案 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;
}