Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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表中获取innerHTML代码_Php_Html - Fatal编程技术网

如何使用PHP从HTML表中获取innerHTML代码

如何使用PHP从HTML表中获取innerHTML代码,php,html,Php,Html,我能够正确解析HTML页面,但它只是解析数据,而我想在,中获取整个HTML代码。下面是我的PHP代码: <?php $dom = new DOMDocument(); //load the html $html = $dom->loadHTMLFile("hydrocarbon.htm"); //discard white space //$dom->preserveWhiteSpace = false; //the tabl

我能够正确解析HTML页面,但它只是解析数据,而我想在
中获取整个HTML代码。下面是我的PHP代码:

<?php    
   $dom = new DOMDocument();  

//load the html  
$html = $dom->loadHTMLFile("hydrocarbon.htm");  

  //discard white space   
//$dom->preserveWhiteSpace = false;   

  //the table by its tag name  
$tables = $dom->getElementsByTagName('table');   


    //get all rows from the table  
$rows = $tables->item(0)->getElementsByTagName('tr');   
  // get each column by tag name  
$cols = $rows->item(0)->getElementsByTagName('th');   
$row_headers = NULL;
foreach ($cols as $node) {
    //print $node->nodeValue."\n";   
    $row_headers[] = $node->nodeValue;
}   

$table = array();
  //get all rows from the table  
$rows = $tables->item(0)->getElementsByTagName('tr');   
foreach ($rows as $row)   
{   
   // get each column by tag name  
    $cols = $row->getElementsByTagName('td');   
    $row = array();
    $i=0;
    foreach ($cols as $node) {
        # code...
        //print $node->nodeValue."\n";   
        if($row_headers==NULL)
            $row[] = $node->nodeValue;
        else
            $row[$row_headers[$i]] = $node->nodeValue;
        $i++;
    }   
    $table[] = $row;
}   

//var_dump($table);
print("<pre>".print_r($table,true)."</pre>");
?>

在第二个for循环中:

[1] => Array
(
    [Column 1] => <b>Q</b>
    [Column 2] => Desc.
)
然后,输出将为:

[1]=>数组
(
[第1列]=>Q
[第2列]=>说明。
)

这是示例html,您的代码是针对此特定示例的,请与我聊天,您的解决方案有效,但不在我的原始htmlI中。我已更新了问题,添加了原始表格,我希望您的答案也适用于此示例,但不兼容,请根据它建议解决方案是的,我的解决方案在这里也会起作用,并给您提供

不正确的

它不起作用,数组是空的,我可以在任何桌面上向您展示我在等您吗?亲爱的,这个答案将帮助您:这与我的要求无关,下面的答案适用于示例html,但是如果我把我的实际html(我在最后复制了它),这个解决方案就不起作用了
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=610 style='width:457.25pt;margin-left:10.8pt;background:#CED7E7;border-collapse:
 collapse;border:none'>
    <tr style='height:30.35pt'>
        <td width=112 valign=top style='width:84.0pt;border:solid black 1.0pt;
  background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;height:30.35pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>Question<span style='border:none'> </span></span>
                </span>
            </p>
        </td>
        <td width=498 colspan=2 valign=top style='width:373.25pt;border:solid black 1.0pt;
  border-left:none;background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;
  height:30.35pt'>
            <p class=MsoNormal style='margin-top:0cm;margin-right:-48.45pt;margin-bottom:
  0cm;margin-left:18.0pt;margin-bottom:.0001pt;line-height:115%;border:none'><b><span
  lang=EN-US style='font-family:"Garamond","serif";border:none'><span
  style='border:none'>Consider the following reaction,</span></span></b>
            </p>
            <p class=MsoNormal style='margin-top:0cm;margin-right:-48.45pt;margin-bottom:
  0cm;margin-left:18.0pt;margin-bottom:.0001pt;line-height:115%'><b><span
  lang=EN-US style='font-family:"Garamond","serif";border:none'><span
  style='border:none'>H</span></span></b><b><sub><span lang=EN-US
  style='font-family:"Garamond","serif";border:none'><span style='border:none'>3</span></span></sub></b><b><span
  lang=EN-US style='font-family:"Garamond","serif";border:none'><span
  style='border:none'>C – CH – CH – CH</span></span></b><b><sub><span
  lang=EN-US style='font-family:"Garamond","serif";border:none'><span
  style='border:none'>3</span></span></sub></b><b><span lang=EN-US
  style='font-family:"Garamond","serif";border:none'><span style='border:none'>
  + </span></span></b><b><span lang=EN-US style='font-family:"Garamond","serif";
  position:relative;top:2.0pt;border:none'><img width=26 height=29
  src="hydrocarbon2_files/image001.png"></span></b><b><span lang=EN-US
  style='font-family:"Garamond","serif";border:none'><span style='border:none'> &#8594;
  ‘X’  + HBr                                                   </span></span></b>
            </p>
            <p class=MsoNormal style='margin-top:0cm;margin-right:-48.45pt;margin-bottom:
  0cm;margin-left:18.0pt;margin-bottom:.0001pt;line-height:115%'><b><span
  lang=EN-US style='font-family:"Garamond","serif";border:none'><span
  style='border:none'>            |        |</span></span></b>
            </p>
            <p class=MsoNormal style='margin-top:0cm;margin-right:-48.45pt;margin-bottom:
  0cm;margin-left:18.0pt;margin-bottom:.0001pt;line-height:115%'><b><span
  lang=EN-US style='font-family:"Garamond","serif";border:none'><span
  style='border:none'>            D       CH</span></span></b><b><sub><span
  lang=EN-US style='font-family:"Garamond","serif";border:none'><span
  style='border:none'>3</span></span></sub></b>
            </p>
            <p class=MsoNoSpacing style='margin-top:0cm;margin-right:-48.45pt;margin-bottom:
  0cm;margin-left:.3pt;margin-bottom:.0001pt;text-align:justify;text-indent:
  -.3pt'><b><span lang=EN-GB style='font-size:16.0pt;font-family:"Chaparral Pro","serif"'>&nbsp;</span></b>
            </p>
        </td>
    </tr>
    <tr style='height:15.0pt'>
        <td width=112 valign=top style='width:84.0pt;border:solid black 1.0pt;
  border-top:none;background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;
  height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>Type</span></span>
            </p>
        </td>
        <td width=498 colspan=2 valign=top style='width:373.25pt;border-top:none;
  border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>multiple_choice</span></span>
            </p>
        </td>
    </tr>
    <tr style='height:15.0pt'>
        <td width=112 valign=top style='width:84.0pt;border:solid black 1.0pt;
  border-top:none;background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;
  height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>Option</span></span>
            </p>
        </td>
        <td width=219 valign=top style='width:164.25pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;height:15.0pt'>
            <p class=BodyA><span style='font-size:16.0pt;color:black;border:none'><img
  width=205 height=93 src="hydrocarbon2_files/image002.jpg"></span>
            </p>
        </td>
        <td width=279 valign=top style='width:209.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>I</span></span><span lang=EN-US style='font-size:16.0pt;
  border:none'><span style='border:none'>n<span style='border:none'>correct</span></span>
                </span>
            </p>
        </td>
    </tr>
    <tr style='height:15.0pt'>
        <td width=112 valign=top style='width:84.0pt;border:solid black 1.0pt;
  border-top:none;background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;
  height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>Option</span></span>
            </p>
        </td>
        <td width=219 valign=top style='width:164.25pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;height:15.0pt'>
            <p class=BodyA><span style='font-size:16.0pt;border:none'><img width=205
  height=102 id="Picture 13" src="hydrocarbon2_files/image003.jpg"></span>
            </p>
        </td>
        <td width=279 valign=top style='width:209.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>C</span></span><span lang=EN-US style='font-size:16.0pt;
  border:none'><span style='border:none'>orrect</span></span>
            </p>
        </td>
    </tr>
    <tr style='height:15.0pt'>
        <td width=112 valign=top style='width:84.0pt;border:solid black 1.0pt;
  border-top:none;background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;
  height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>Option</span></span>
            </p>
        </td>
        <td width=219 valign=top style='width:164.25pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;height:15.0pt'>
            <p class=BodyA><span style='font-size:16.0pt;border:none'><img width=205
  height=107 id="Picture 16" src="hydrocarbon2_files/image004.jpg"></span>
            </p>
        </td>
        <td width=279 valign=top style='width:209.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>Incorrect</span></span>
            </p>
        </td>
    </tr>
    <tr style='height:15.0pt'>
        <td width=112 valign=top style='width:84.0pt;border:solid black 1.0pt;
  border-top:none;background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;
  height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>Option</span></span>
            </p>
        </td>
        <td width=219 valign=top style='width:164.25pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;height:15.0pt'>
            <p class=BodyA><span style='font-size:16.0pt;border:none'><img width=205
  height=112 id="Picture 19" src="hydrocarbon2_files/image005.jpg"></span>
            </p>
        </td>
        <td width=279 valign=top style='width:209.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>Incorrect</span></span>
            </p>
        </td>
    </tr>
    <tr style='height:15.0pt'>
        <td width=112 valign=top style='width:84.0pt;border:solid black 1.0pt;
  border-top:none;background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;
  height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>Solution</span></span>
            </p>
        </td>
        <td width=498 colspan=2 valign=top style='width:373.25pt;border-top:none;
  border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;height:15.0pt'>
            <p class=MsoNormal style='margin-left:27.0pt;text-align:justify;text-indent:
  -27.0pt;line-height:115%'><span style='font-family:"Garamond","serif";
  border:none'><img width=398 height=92 id="Picture 10"
  src="hydrocarbon2_files/image006.jpg"></span>
            </p>
        </td>
    </tr>
    <tr style='height:15.0pt'>
        <td width=112 valign=top style='width:84.0pt;border:solid black 1.0pt;
  border-top:none;background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;
  height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>Marks</span></span>
            </p>
        </td>
        <td width=219 valign=top style='width:164.25pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>4</span></span>
            </p>
        </td>
        <td width=279 valign=top style='width:209.0pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  background:transparent;padding:4.0pt 4.0pt 4.0pt 4.0pt;height:15.0pt'>
            <p class=BodyA><span lang=EN-US style='font-size:16.0pt;border:none'><span
  style='border:none'>1</span></span>
            </p>
        </td>
    </tr>
</table>
foreach ($rows as $row)   
{   
   // get each column by tag name  
    $cols = $row->getElementsByTagName('td');   
    $row = array();
    $i=0;
    foreach ($cols as $node) {
        # code...

        if($row_headers==NULL)
            $row[] = $node->nodeValue;
        else
            $row[$row_headers[$i]] = $node->firstChild->ownerDocument->saveHTML($node->firstChild);
        $i++;
    }   
    $table[] = $row;
}   
[1] => Array
(
    [Column 1] => <b>Q</b>
    [Column 2] => Desc.
)