我想回復一些類似於這個問題的其他網站的數據Getting data from another site with php via ID。獲取一個頁面的表格數據
表中有一行我想獲取並回顯,但無法使其回顯任何內容。
這是我的代碼,因爲我調整它來自上述問題的代碼,但它不起作用。
$content = "http://voucher.gov.gr/project/pedy-results/gid/14?search=PDNO-78256-114-20140722-120951";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $content);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$body= curl_exec ($ch);
curl_close ($ch);
preg_match('#<tr class="row0"><td>([0-9\.]*)</td><td>([0-9\.]*)</td><td>([0-9\.]*)</td><td>([0-9\.]*)</td><td>([0-9\.]*)</td><td>([0-9\.]*)</td><td>([0-9\.]*)</td><td>([0-9\.]*)</td><td>([0-9\.]*)</td><td>([0-9\.]*)</td><td>([0-9\.]*)</td>#Uis', $body, $resultmatch);
$results = $resultmatch;
foreach($results as $word)
echo $word;
該數組雖然創建但沒有數據。任何幫助/建議,將不勝感激謝謝!
編輯 解答:謝謝大家的幫助,但我設法使它工作!這是代碼:
preg_match('#<td>(.*)</td>(.*)<td>(.*)</td>(.*)<td style="max-width:151px;"><strong>(.*)</strong></td>(.*)<td>(.*)</td>(.*)<td>(.*)</td>(.*)<td>(.*)</td>(.*)<td>(.*)</td>(.*)<td>(.*)</td>(.*)<td>(.*)</td>(.*)<td>(.*)</td>#Uis', $body, $resultmatch);
此代碼是不是絕對正確的答案,因爲這不僅會返回內的信息對TD的我想,它也返回它們之間的白色空間,這就是因爲代碼不能沒有工作在td之間放置「(。*)」。因爲我不得不忍受它!但是,您可以通過忽略帶有空格的結果插入數組(在我們的例子中爲resultmatch[2,4,6,8,10...]
等等)來避免它。我希望我的編輯幫助。當然可以進一步改進代碼以避免將空白插入到數組中。
你調試的過程中的每一步?例如,你有什麼東西返回到'$ body'嗎? – Raad 2014-09-30 09:27:14
@Raad yeap body正確返回整個頁面,我認爲問題存在於preg_match內,但我對錶達式不熟悉。 – fotis179 2014-09-30 09:36:08
如果我是正確的(RegExp不是我的強項之一),那麼匹配查找包含11個表格單元格的css類「row0」的行,而這些表格單元格只包含數字。所尋址的頁面在前5個單元格中包含非數字內容,因此不匹配。 – Raad 2014-09-30 09:48:29