2013-08-28 2 views
1

Я хотел бы получить текст по tr 2, td 4, first a, из каждой статьи (таблицы), я не должен ссылаться на текст справа как когда я print_r Я ничего не возвращаю назад.Как получить данные из таблицы, используя phpQuery в цикле foreach

// table 1 
     <table class="articles"> 
     <tbody> 
      <tr>some text here maybe tags</tr> 
      <tr> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td><a href="link.html">WANT TO GET THIS TEXT</a></td> 
      </tr> 
     </tbody> 

     </table> 

// table 2 
     <table class="articles"> 
     <tbody> 
      <tr>some text here maybe tags</tr> 
      <tr> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td><a href="link.html">WANT TO GET THIS TEXT</a></td> 
      </tr> 
     </tbody> 

     </table> 

// more tables etc. 

     <table class="articles"> 
     <tbody> 
      <tr>some text here maybe tags</tr> 
      <tr> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td><a href="link.html">WANT TO GET THIS TEXT</a></td> 
      </tr> 
     </tbody> 

     </table> 

У моего кода phpQuery нет ошибок, но ничего не отображается, я не уверен, что я делаю неправильно.

<?php 
require "phpQuery/phpQuery-onefile.php"; 


     // Load betting page 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, 'http://example.net/'); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     $html = curl_exec($ch); 
     curl_close($ch); 

     // Create phpQuery document with returned HTML 
     $doc = phpQuery::newDocument($html); 

     $articleDate = array(); 


     $surroundingTheArticles = $doc->find('table.articles'); 

      foreach($surroundingTheArticles as $eachArticle) 
      { 
      // get table rows  
      $articleDate[] .= pq($eachArticle)->find('tbody:eq(0) tr:eq(1) td:eq(4)')->text(); // maybe first:a or something - don't know 

      } 

     print_r($articleDate[1]); 
     // find a way to print all article dates 

?> 
+0

вы можете редактировать в массиве, который возвращается в print_r(), который будет определять, как вам нужно, чтобы цикл, или цикл в цикле, если это необходимо. –

+0

ничего не отображает –

ответ

1

Это решение требует от пользователя simple_html_dom. вы можете получить его here

<?php 
require_once 'simple_html_dom.php'; 

$html = ' 
<table class="articles"> 
     <tbody> 
      <tr>some text here maybe tags</tr> 
      <tr> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td><a href="link.html">WANT TO GET THIS TEXT</a></td> 
      </tr> 
     </tbody> 

     </table> 

     <table class="articles"> 
     <tbody> 
      <tr>some text here maybe tags</tr> 
      <tr> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td><a href="link.html">WANT TO GET THIS TEXT</a></td> 
      </tr> 
     </tbody> 

     </table> 


     <table class="articles"> 
     <tbody> 
      <tr>some text here maybe tags</tr> 
      <tr> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td> some text here maybe tags </td> 
       <td><a href="link.html">WANT TO GET THIS TEXT</a></td> 
      </tr> 
     </tbody> 

     </table> 
'; 

$html = str_get_html($html); 

foreach($html->find('table[class=articles]') as $element){ 
    $result = $element->find('tr'); 
    $result = $result[1]->find('td'); 
    echo($result[4]); echo('<br>'); 
} 


?> 
+0

в моем редакторе phpED, он отображается красным под [1], и я также получаю сообщение об ошибке в этой строке - $ result = $ element-> find ('tr') [1] -> find ('тд') [4]; ошибка ... Неопределенное смещение: 1 –

+0

Я отредактировал ответ, чтобы он работал на более старой версии php. Я получаю этот вывод: ХОТИТЕ ПОЛУЧИТЬ ЭТОТ ТЕКСТ ХОТИТЕ ПОЛУЧИТЬ ЭТОТ ТЕКСТ ХОТИТЕ ПОЛУЧИТЬ ЭТОТ ТЕКСТ – Tuxes3

+0

Мне, наконец, удалось заставить его работать, мне пришлось изменить эту строку ... $ result = $ result [1] - > находка ('тд'); to $ result = $ result [0] -> find ('td'); Я хотел бы понять, почему это работает с [0] вместо [1], видя, что я получаю tr 2. кто-нибудь знает? –

Смежные вопросы