0

我正在尝试从 PHP 变量中的 HTML 代码中提取数据。

HTML如下:

<tr class="tr1">
  <td align="right">
    1.
  </td>
  <td align="left">
     <input type="hidden" name="now[8116632]" value="98" />
     <input type="hidden" name="add[8116632]" value="39" />
     <input type="hidden" name="sec_value[8116632]" value="45720000" />
     <div id="uid8116632"></div>
  </td>
  <td align="left">
    <a href="playerInfo.phtml?pid=8116632" target="_blank"
    onclick="return(openSmallWindow('playerInfo.phtml?pid=8116632',
    c41c569a1b9c46c4cbc4bc58f37cb05f'))">kana</a>
  </td>
  <td align="right">
    98
  </td>
  <td align="right">
    45.720.000
  </td>
</tr>

<tr class="tr2">
  <td align="right">
    2.
  </td>
  <td align="left">
    <input type="hidden" name="now[8121292]" value="90" />
    <input type="hidden" name="add[8121292]" value="45" />
    <input type="hidden" name="sec_value[8121292]" value="36500000" />
    <div id="uid8121292"></div>
  </td>
  <td align="left">
    <a href="playerInfo.phtml?pid=8121292" target="_blank"
    onclick="return(openSmallWindow('playerInfo.phtml?pid=8121292',
    'c41c569a1b9c46c4cbc4bc58f37cb05f'))">Xoán Manuel Pérez Chaves</a>
  </td>
  <td align="right">
    90
  </td>
  <td align="right">
    36.500.000
  </td>
</tr>

在这段代码中,我想提取:

<td align="right">1.</td> 

这个数字作为$position

<input type="hidden" name="now[8116632]" value="98" /> 

属性名称中方括号之间的id编号为$id,值为$value

<input type="hidden" name="sec_value[8121292]" value="36500000" /> 

这个值作为$price

到目前为止,我的 php 代码是这样的:

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

$xpath = new DomXpath($DOM);
$div = $xpath->query('//*[@class="tr1"]');

现在我怎样才能得到我之前告诉你们的变量?$position,$id,$value and $price

先感谢您

4

2 回答 2

2

对于元素文本,使用类似

.../td[@align='right']/text()

对于属性值,使用类似

.../td[@align='left']/input[1]/@value

为了解析括号,您将不得不使用子字符串函数,这会变得混乱。substring-before 和 substring-after 可能是您正在寻找的。看看这个作为参考:xpath:字符串操作

于 2013-08-28T00:23:29.677 回答
1

我宁愿使用隐藏类型的更多输入并给它们适当的名称,例如:

<tr class="tr1">
<td align="right">1.</td>
<input type="hidden" name="position" value="1" />
<input type="hidden" name="id" value="765434" />
<input type="hidden" name="value" value="89898989" />
<input type="hidden" name="price" value="100" />
<td>Some description</td>
</tr>

维护这样的代码会容易得多,并且在 php.ini 中访问变量不会有任何问题。如果这是您现在要求的,我很抱歉,但对我来说这是合理的解决方案(我可能不知道所有事实)。

如果您无法更改此 HTML,我建议您检查 SimpleHTMLDom 库而不是 xpath,这里有一些信息:

http://simplehtmldom.sourceforge.net/manual.htm

于 2013-08-27T23:35:50.047 回答