在PHP中使用XPath循环

在PHP中使用XPath循环,php,loops,dom,xpath,Php,Loops,Dom,Xpath,我有这个html表格: <tbody> <tr class="r1"> <td class="l rbrd"> <img class="spr2 sport sp1" align="absmiddle" src="/s.gif"> </td> <td class="l rbrd">19/4 18:30</td> <td class

我有这个html表格:

<tbody>
   <tr class="r1">

      <td class="l rbrd">
         <img class="spr2 sport sp1" align="absmiddle" src="/s.gif">
      </td>

      <td class="l rbrd">19/4 18:30</td>

      <td class="l rbrd">
         <a title="CHELSEA FC - SUNDERLAND" href="/chelsea-fc-vs-sunderland/e/4509648/" target="_blank">CHELSEA FC - SUNDERLAND</a>
      </td>

      <td class="c w40">
         <span class="o">1,21</span>
         <span class="p">91,8%</span>
      </td>

   </tr>

您可以尝试以下方法

<?php
$url = 'http://www.oxybet.ro/pariu/external/betfair-volumes.htm';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

$document = new DOMDocument();
$document->loadHTML($response);

$xpath = new DOMXPath($document);
$expression = '/html/body/div/div/div[2]/div/div/table/tbody/tr';
$rows = $xpath->query($expression);

$results = array();

foreach ($rows as $row) {
  $result = array();

  $expression = './td[2]';
  $result['date'] = $xpath->query($expression, $row)->item(0)->nodeValue;

  $expression = './td[3]/a';
  $result['teams'] = $xpath->query($expression, $row)->item(0)->nodeValue;

  $expression = './td[4]/span';
  $result['1'] = $xpath->query($expression, $row)->item(0)->nodeValue;

  $expression = './td[4]/span[2]';
  $result['1 volumes'] = $xpath->query($expression, $row)->item(0)->nodeValue;

  array_push($results, $result);
}

var_dump($results);

不发布重复项的可能重复项。这只会导致人们加倍努力。
[0] => Array
        (
            [date] => 18:30 19/4
            [teams] => CHELSEA FC - SUNDERLAND
            [1] => 1,21
            [1 volumes] => 91,8%

        )
<?php
$url = 'http://www.oxybet.ro/pariu/external/betfair-volumes.htm';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

$document = new DOMDocument();
$document->loadHTML($response);

$xpath = new DOMXPath($document);
$expression = '/html/body/div/div/div[2]/div/div/table/tbody/tr';
$rows = $xpath->query($expression);

$results = array();

foreach ($rows as $row) {
  $result = array();

  $expression = './td[2]';
  $result['date'] = $xpath->query($expression, $row)->item(0)->nodeValue;

  $expression = './td[3]/a';
  $result['teams'] = $xpath->query($expression, $row)->item(0)->nodeValue;

  $expression = './td[4]/span';
  $result['1'] = $xpath->query($expression, $row)->item(0)->nodeValue;

  $expression = './td[4]/span[2]';
  $result['1 volumes'] = $xpath->query($expression, $row)->item(0)->nodeValue;

  array_push($results, $result);
}

var_dump($results);