2013-08-27 63 views
0

我试图从PHP变量中的HTML代码中提取数据。从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" /> 

的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

对于元素文本使用类似

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

对于属性值使用类似于

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

和解析括号,你将不得不使用子字符串函数,这将变得混乱。 substring-before和substring-after可能是你正在寻找的东西。请查看以下内容作为参考:xpath: string manipulation

+0

中去检查。谢谢 – Weinz

+0

这是什么'...'? –

+0

“...”表示原始海报的写法:“// * [@ class =”tr1“]”。 –

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

+0

我无法修改HTML代码,因为它是使用cURL从网站中提取的。我需要从HTML代码中获取数据并将其存储在我提到的早期变量 – Weinz