从PHP变量中的HTML代码中提取数据

时间:2013-08-27 23:15:44

标签: php html xpath

我正在尝试从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" /> 

attributte名称中的方形bracks之间的idnumber为$ 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

提前谢谢

2 个答案:

答案 0 :(得分:2)

对于元素文本,请使用

之类的内容
.../td[@align='right']/text()

对于属性值,请使用类似

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

并且为了解析括号,你将不得不使用子串函数,这将变得混乱。 substring-before和substring-after可能就是你要找的东西。请将其作为参考:xpath: string manipulation

答案 1 :(得分: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中的变量时也没有问题。 对不起,如果这是你要求的,但对我来说这是合理的解决方案(我可能不知道所有的事实)。

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

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