从PHP获取文本

从PHP获取文本,php,xpath,domready,Php,Xpath,Domready,我得到表的tr,然后在循环中我想要得到所有td字段的文本,请看这里: <? $lines = $xpath->query("//table[@id='cab_table'] //tr"); var_dump($lines);// Give me object(DOMNodeList)#11 (1) { ["length"]=> int(6) } for( $i = 0; $i < count($lines); $i++)

我得到表的tr,然后在循环中我想要得到所有td字段的文本,请看这里:

<?
    $lines = $xpath->query("//table[@id='cab_table'] //tr");
       var_dump($lines);// Give me object(DOMNodeList)#11 (1) { ["length"]=> int(6) }


            for( $i = 0; $i < count($lines); $i++) {
                if($i != 0){
                    $tds = $xpath->query('//td', $lines[$i]);
                    $result[$i - 1]['number'] = trim($tds->item(0)->nodeValue);
                    $result[$i - 1]['volume'] = trim($tds->item(1)->nodeValue);
                    $result[$i - 1]['sum'] = trim($tds->item(2)->nodeValue);
                }
            }

            var_dump($result); //Give me NULL
            die();

为什么我得到空值

现在我有:

$lines = $xpath->query("//table[@id='cab_table'] //tr");


            foreach($lines as $line) {
             $tds = $xpath->query('//td', $line);
             $count = $tds->length;

                for($i=0; $i<$count; $i++){

                    echo $tds->item($i)->nodeValue.'<br>';
                    //echo $i.'<br>';


                }

            }
$lines=$xpath->query(//table[@id='cab_table']//tr”);
foreach($line作为$line){
$tds=$xpath->query('//td',$line);
$count=$tds->长度;
对于($i=0;$iitem($i)->节点值。“
”; //回显$i.“
”; } }
但是我想为每个tr-at循环创建下一个tr-at循环
$result[0]=td[0];$result[1]=td[1];$result[2]=td[2];
你能告诉我吗?

->query()
返回一个DOMNodeList对象。它可以是count()和foreach(),但不能像现在这样作为数组使用

$tds = $xpath->query('//td', $lines[$i]);
                             ^^^^^^^^^^---incorrect
试一试

相反。

foreach($line作为$line){
foreach($lines as $line) {

                    for($j=0; $j<=3; $j++) {

                     $tds_{$j} = $xpath->query('//td['.$j.']', $line);
                     $tds_{$j} = $xpath->query('//td['.$j.']', $line);
                     $tds_{$j} = $xpath->query('//td['.$j.']', $line);

                     $count = $tds_{$j}->length;


                        for($i=0; $i<$count; $i++){

                            $this->result['number'][] = $tds_{$j}->item($i)->nodeValue;
                            $this->result['volume'][] = $tds_{$j}->item($i)->nodeValue;
                            $this->result['code'][] = $tds_{$j}->item($i)->nodeValue;
                            $this->result['start_date'][] = $startDate;
                            $this->result['end_date'][] = $endDate;

                        }

                    }

                }
对于($j=0;$jquery('//td['.$j.]',$line); $tds{$j}=$xpath->query('//td['.$j.]',$line); $tds{$j}=$xpath->query('//td['.$j.]',$line); $count=$tds{$j}->长度; 对于($i=0;$iresult['number'][]=$tds{$j}->item($i)->nodeValue; $this->result['volume'][=$tds{$j}->item($i)->nodeValue; $this->result['code'][=$tds{$j}->item($i)->nodeValue; $this->result['start\u date'][]=$startDate; $this->result['end\u date'][]=$endDate; } } }
不太必要,但如果您发布HTML或链接到它,它可能会有所帮助。您可能正在寻找:谢谢,bu如果我想获得td[0],td[1].td[2]?我需要在loop和foreach中使用loop($tds as$val){echo$val->item(0)->nodeValue;}DOM可能是一种痛苦。您可能需要考虑SimeXML,它简化了这种访问。它更像是<代码> $DOM>表[T](0)-TD(1)< /代码>和WHOT。尝试:FURACH($行作为$行){$TDS= $XPath ->查询('//TD',$行);($i=0;$iTIAL($i)-> NoDEValue.'BR>’;}。}你在哪里?请看我的例子,它工作错误,我没有得到需要我的数据td[0]td[1]td[2]
foreach($lines as $line) {

                    for($j=0; $j<=3; $j++) {

                     $tds_{$j} = $xpath->query('//td['.$j.']', $line);
                     $tds_{$j} = $xpath->query('//td['.$j.']', $line);
                     $tds_{$j} = $xpath->query('//td['.$j.']', $line);

                     $count = $tds_{$j}->length;


                        for($i=0; $i<$count; $i++){

                            $this->result['number'][] = $tds_{$j}->item($i)->nodeValue;
                            $this->result['volume'][] = $tds_{$j}->item($i)->nodeValue;
                            $this->result['code'][] = $tds_{$j}->item($i)->nodeValue;
                            $this->result['start_date'][] = $startDate;
                            $this->result['end_date'][] = $endDate;

                        }

                    }

                }