PHP DOM遍历另一个元素中的元素

PHP DOM遍历另一个元素中的元素,php,dom,web,Php,Dom,Web,我必须从网站上收集一些数据。我的数据被包装为div s。每个div内都有一个标题标签。我需要获取这些标题标签内的文本。如何做到这一点。 我已经写了下面的代码。我要申请什么修改才能完成任务 <?php $str = ''; $page = file_get_contents('http://www.sarkari-naukri.in/'); $dom = new DOMDocument(); $dom->loadHTML($page); $divs = $dom->getEle

我必须从网站上收集一些数据。我的数据被包装为div s。每个div内都有一个标题标签。我需要获取这些标题标签内的文本。如何做到这一点。 我已经写了下面的代码。我要申请什么修改才能完成任务

<?php
$str = '';
$page =  file_get_contents('http://www.sarkari-naukri.in/');
$dom = new DOMDocument();
$dom->loadHTML($page);
$divs = $dom->getElementsByTagName('div');
$i = 0;
$len = $divs->length;
while($i<$len) {
    $div = $divs->item($i++);
    $id = $div->getAttribute('id');
    if(strpos($id,'post-') !== false ) {
           // i need to get text inside title tag inside this div
        $title ='';//title should be stored here
        $str = $str.$title;
    }
}
echo $str;

您可以使用xpath查询来检索标题信息:

$xml = "<body>
    <div id = 'post-1'>
         <title>title 1</title>
    </div>
    <div id = 'post-2'>
         <title>title 2</title>
    </div>
    <div id = 'post-3'>
         <title>title 3</title>
    </div>
</body>";

$str = '';

$doc = new DOMDocument;
$doc->loadHTML($xml);

$xpath = new DOMXPath($doc);

$entries = $xpath->query('//body/div/title');
foreach ($entries as $entry) {
    $str .= $entry->nodeValue;
}

var_dump($str);
$xml=”
标题1
标题2
标题3
";
$str='';
$doc=新文档;
$doc->loadHTML($xml);
$xpath=新的DOMXPath($doc);
$entries=$xpath->query('//body/div/title');
foreach($entries作为$entry){
$str.=$entry->nodeValue;
}
var_dump($str);

.

您可以使用xpath查询来检索标题信息:

$xml = "<body>
    <div id = 'post-1'>
         <title>title 1</title>
    </div>
    <div id = 'post-2'>
         <title>title 2</title>
    </div>
    <div id = 'post-3'>
         <title>title 3</title>
    </div>
</body>";

$str = '';

$doc = new DOMDocument;
$doc->loadHTML($xml);

$xpath = new DOMXPath($doc);

$entries = $xpath->query('//body/div/title');
foreach ($entries as $entry) {
    $str .= $entry->nodeValue;
}

var_dump($str);
$xml=”
标题1
标题2
标题3
";
$str='';
$doc=新文档;
$doc->loadHTML($xml);
$xpath=新的DOMXPath($doc);
$entries=$xpath->query('//body/div/title');
foreach($entries作为$entry){
$str.=$entry->nodeValue;
}
var_dump($str);

.

以下PHP文档代码:

$id = $div->getAttribute('id');
if (strpos($id,'post-') !== false) {
可以用以下形式表示:

读取:任何
div
元素,其具有包含字符串
post-
id
属性。根据Xpath规则,您可以进一步扩展表达式,如选择以下所有表达式的标题子级:

//div[contains(@id, 'post-')]/title

以下是PHP文档代码:

$id = $div->getAttribute('id');
if (strpos($id,'post-') !== false) {
可以用以下形式表示:

读取:任何
div
元素,其具有包含字符串
post-
id
属性。根据Xpath规则,您可以进一步扩展表达式,如选择以下所有表达式的标题子级:

//div[contains(@id, 'post-')]/title

谢谢你的回答…我需要选择someAttribute=someValue的div…怎么做?@JinuJD:还有xpath,请使用搜索。例如,请看-过一段时间后,您应该会对它感到满意。感谢您给出了令人惊叹的答案…我需要选择someAttribute=someValue的div…如何做到这一点?@JinuJD:以及xpath,请使用搜索。例如,看-过一段时间后你应该会对它感到舒服。谢谢。这正是我想要的。这里也可能是你的意思?但是它没有被解析,因为我的HTML有错误并且没有DOM。怎么办?如果HTML无效(即使无效,loadHTML也无法处理它),请与tidy联系:谢谢。这正是我想要的。这里也可能是你的意思?但由于我的HTML有错误且没有DOM,因此它没有被解析。怎么办?如果HTML无效(即使loadHTML无法处理该无效),请与tidy联系: