Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php抓取html数据_Php_Html - Fatal编程技术网

使用php抓取html数据

使用php抓取html数据,php,html,Php,Html,如何将HTML数据解析为PHP数组PHP HTML数据 <div class="test"> <strong>ID</strong> <a href="a.html" title="a html">123456</a><br> <label class='label'>Occupation </label>

如何将
HTML数据
解析为
PHP数组PHP

HTML数据

<div class="test">
    <strong>ID</strong>
    <a href="a.html" title="a html">123456</a><br>
    <label class='label'>Occupation </label>    
    House wife      <br>
    <label>Language?</label>    
    English     <br>
    <label style="width:50%">Basic Language Knowledge of?</label>   
    Hindi       <br>
    <label>Start date</label>
    Nov 2013        <br>
    <label>Other Info</label>
    yes     <br>
    <label>age</label>
    19      <br>
    <label>Gender</label>   
    Female      <br>
    <strong>Address</strong>
    India       <br><br>
    <p>Hi, <br>
Lorem ipsum doner inut</p>
</div>

ID

职业 家庭主妇
语言? 英语
基本的语言知识? 印地语
开始日期 2013年11月
其他信息 是
年龄 19
性别 女性
地址 印度

嗨,
同侧耳

我试过这个

<?php
    $html='Let above html to parse';
    preg_match_all('/<label\s(.*)>(.*)<\/label>/U',$html,$m);
    print_r($m);
    // gives all label contents only but I need pair of label text 
    // and value showing after it
?>

输出类似

数组('ID'=>123456,'link'=>a.html','occulation'=>House 妻子“,”语言“=>”英语“,”基本语言知识 其中?“=>”印地语“、”开始日期“=>”2013年11月“、”其他信息“=>”是” “年龄”=>“19”、“性别”=>“女性”、“地址”=>“印度”、“描述”=>“嗨, "同侧眼",

是的,
忘了提到
我正在使用的
刮取

用于解析HTML

$doc = new DOMDocument();
$doc->loadHTML($html);
和用于获取所有标签:

$xpath = new DOMXPath($doc);
$allLabels = $xpath->query('//label');

foreach($allLabels as $label) {
    var_dump($label, $label->nodeValue);

    /* or */
    $labelElmnts = $xpath->query('/*', $label);

    $innerHTML = '';

    foreach($labelElmnts as $elmnt)
        $innerHTML .= $domDoc->saveHTML($elmnt);

    var_dump($innerHTML);
}
更简单的解决方案

使用:


就像jquery一样。

我使用了
ganon
,所以我不想使用
Dom文档
我尝试了一些东西,然后
工作了
比如

// for description
echo $desc=$html('div.right_div p',0)->getInnerText();

$s=$html('div.right_div',0)->getInnerText();

// for occupation
$r='/<label>\s*Occupation\s*<\/label>\s*(.*)\s*<br\s*[\/]>/i';
preg_match_all($r,$s,$ma);
echo $occupation=$ma[1];

// for address
$r='/<strong>\s*Address\s*<\/strong>\s*(.*)\s*<br\s*[\/]>/i';
preg_match_all($r,$s,$ma);
echo $address=$ma[1];

// for id
echo $id=$html('div.right_div a',0)->getInnerText();
//用于说明
echo$desc=$html('div.right_div p',0)->getInnerText();
$s=$html('div.right_div',0)->getInnerText();
//职业
$r='/\s*职业\s*\s*(.*)\s*/i';
预赛(r$s$ma);
echo$occulation=$ma[1];
//地址
$r='/\s*地址\s*\s*(.*)\s*/i';
预赛(r$s$ma);
echo$address=$ma[1];
//身份证
echo$id=$html('div.right_div a',0)->getInnerText();

以此类推,..

那么问题出在哪里呢?它只会给出
标签数据的列表,我需要标签数据后面的文本,比如,
职业=>'house-fixer'`阅读文档:<代码>->nodeValue
是您正在寻找的。请看一下我在答案中编辑的代码。
// for description
echo $desc=$html('div.right_div p',0)->getInnerText();

$s=$html('div.right_div',0)->getInnerText();

// for occupation
$r='/<label>\s*Occupation\s*<\/label>\s*(.*)\s*<br\s*[\/]>/i';
preg_match_all($r,$s,$ma);
echo $occupation=$ma[1];

// for address
$r='/<strong>\s*Address\s*<\/strong>\s*(.*)\s*<br\s*[\/]>/i';
preg_match_all($r,$s,$ma);
echo $address=$ma[1];

// for id
echo $id=$html('div.right_div a',0)->getInnerText();