2013-08-27 102 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