我想回复一些类似于这个问题的其他网站的数据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