我正在使用cURL检索HTML页面。 html页面有一个这样的表。
<table class="table2" style="width:85%; text-align:center">
<tr>
<th>Refference ID</th>
<th>Transaction No</th>
<th>Type</th>
<th>Operator</th>
<th>Amount</th>
<th>Slot</th>
</tr>
<tr>
<td>130717919020ffqClE0nRaspoB</td>
<td>8801458920369</td>
<td>Purchase</td>
<td>Visa</td>
<td>50</td>
<td>20130717091902413</td>
</tr>
</table>
这是该HTML页面中唯一的表格。我需要提取Refference ID&amp;使用PHP插槽。
但不知道如何做到这一点。
修改 这one对我帮助很大。
答案 0 :(得分:1)
基于正则表达式的解决方案(如已接受的答案) 是从HTML文档中提取信息的正确方法。
使用基于DOMDocument
的解决方案代替:
$str = '<table class="table2" style="width:85%; text-align:center">
<tr>
<th>Refference ID</th>
...
<th>Slot</th>
</tr>
<tr>
<td>130717919020ffqClE0nRaspoB</td>
...
<td>20130717091902413</td>
</tr>
</table>';
// Create a document out of the string. Initialize XPath
$doc = new DOMDocument();
$doc->loadHTML($str);
$selector = new DOMXPath($doc);
// Query the values in a stable and easy to maintain way using XPath
$refResult = $selector->query('//table[@class="table2"]/tr[2]/td[1]');
$slotResult = $selector->query('//table[@class="table2"]/tr[2]/td[6]');
// Check if the data was found
if($refResult->length !== 1 || $slotResult->length !== 1) {
die("Data is corrupted");
}
// XPath->query always returns a node set, even if
// this contains only a single value.
$refId = $refResult->item(0)->nodeValue;
$slot = $slotResult->item(0)->nodeValue;
echo "RefId: $refId, Slot: $slot", PHP_EOL;
答案 1 :(得分:0)
$str = '<table class="table2" style="width:85%; text-align:center">
<tr>
<th>Refference ID</th>
<th>Transaction No</th>
<th>Type</th>
<th>Operator</th>
<th>Amount</th>
<th>Slot</th>
</tr>
<tr>
<td>130717919020ffqClE0nRaspoB</td>
<td>8801458920369</td>
<td>Purchase</td>
<td>Visa</td>
<td>50</td>
<td>20130717091902413</td>
</tr>
</table>';
preg_match_all('/<td>([^<]*)<\/td>/', $str, $m);
$reference_id = $m[1][0];
$slot = $m[1][5];