Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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 如何使用DOM刮表并插入mysql_Php_Mysql_Dom_Scrape - Fatal编程技术网

Php 如何使用DOM刮表并插入mysql

Php 如何使用DOM刮表并插入mysql,php,mysql,dom,scrape,Php,Mysql,Dom,Scrape,我在sosmpedpedia.com/harga.php中有一个表,我想在loadHTML($htmlContent)中获得标题表1和细节表1; $Header=$DOM->getElementsByTagName('th'); $Detail=$DOM->getElementsByTagName('td'); //#获取表的标题名称 foreach($Header作为$NodeHeader) { $adatableheaderhtml[]=trim($NodeHeader->textConte

我在sosmpedpedia.com/harga.php中有一个表,我想在
loadHTML($htmlContent)中获得标题表1和细节表1;
$Header=$DOM->getElementsByTagName('th');
$Detail=$DOM->getElementsByTagName('td');
//#获取表的标题名称
foreach($Header作为$NodeHeader)
{
$adatableheaderhtml[]=trim($NodeHeader->textContent);
}
//打印(AdatableHeaderHTML);模具();
//#获取没有标题名称作为键的行数据/明细表
$i=0;
$j=0;
foreach($sNodeDetail)
{
$adatabledetailhtml[$j][]=trim($sNodeDetail->textContent);
$i=$i+1;
$j=$i%计数($AdatableHeaderHTML)==0?$j+1:$j;
}
//打印(AdatableDetailHTML);模具();
//#获取行数据/详细信息表,标题名称为键,外部数组索引为行号
对于($i=0;$i

我的问题是,我得到了另一个表,我只需要
中的表“Harga Sosmed”,我建议使用
DOMXPath
显式地针对您想要的元素:而不是使用
unset
,创建一个建立作用域的函数。我建议使用
DOMXPath
来明确地针对您想要的元素。p:与其使用
unset
,不如创建一个建立作用域的函数。
$htmlContent = file_get_contents("http://sosmedpedia.com/harga.php");

$DOM = new DOMDocument();
$DOM->loadHTML($htmlContent);

$Header = $DOM->getElementsByTagName('th');
$Detail = $DOM->getElementsByTagName('td');

//#Get header name of the table
foreach($Header as $NodeHeader) 
{
    $aDataTableHeaderHTML[] = trim($NodeHeader->textContent);
}
//print_r($aDataTableHeaderHTML); die();

//#Get row data/detail table without header name as key
$i = 0;
$j = 0;
foreach($Detail as $sNodeDetail) 
{
    $aDataTableDetailHTML[$j][] = trim($sNodeDetail->textContent);
    $i = $i + 1;
    $j = $i % count($aDataTableHeaderHTML) == 0 ? $j + 1 : $j;
}
//print_r($aDataTableDetailHTML); die();

//#Get row data/detail table with header name as key and outer array index as row number
for($i = 0; $i < count($aDataTableDetailHTML); $i++)
{
    for($j = 0; $j < count($aDataTableHeaderHTML); $j++)
    {
        $aTempData[$i][$aDataTableHeaderHTML[$j]] = $aDataTableDetailHTML[$i][$j];
    }
}
$aDataTableDetailHTML = $aTempData; unset($aTempData);
print_r($aDataTableDetailHTML); die();