拉表数据preg_match

时间:2012-11-12 14:54:29

标签: php preg-replace preg-match file-get-contents

请先访问此内容:http://www.sportingpulse.com/comp_info.cgi?c=1-5917-0-232432-0&a=STATS&sgroup=floor

这是一个“这个甚至是可能的类型问题”。我创建了一个小脚本来从体育网站上提取数据。

$url = "http://www.sportingpulse.com/comp_info.cgi?c=1-5917-0-232432-0&a=STATS&sgroup=floor";

preg_match_all('#<table[^>]+>[\w\W]*?</table>#i', file_get_contents($url), $match);
$tableone = $match[0][0];
$tabletwo = $match[0][1];

$tableone1 = preg_replace('/<a href=\"(.*?)\">(.*?)<\/a>/', "\\2", $tableone);
echo $tableone1;

这很好用,并将所有表格数据放入我的网站,但我想知道是否可能只取消团队SOL结果而不是每个人?

有没有人能指出我正确的方向,我唯一能想到的就是寻找“SOL”然后以某种方式抓住它后面的tr?

由于

3 个答案:

答案 0 :(得分:2)

试试这个

$url = "http://www.sportingpulse.com/comp_info.cgi?c=1-5917-0-232432-0&a=STATS&sgroup=floor";
$str = file_get_contents($url);
$doc = @DOMDocument::loadHTML($str);
$xpath = new DOMXPath($doc);
$entries = $xpath->query('//html/body/div[@id="site-wrap"]/div[@id="content-wrap"]/div[@id="col-1-2-wrap"]/div[@id="content"]/div[@class="tableContainer"]/div/table/tbody/tr[td[2]/a/text()="SOL"]');
echo '<table>';
foreach($entries as $entry) {
  echo($doc->saveXML($entry));
}
echo '</table>';

答案 1 :(得分:1)

对不起,我不能让这个更完整,但我准备搭乘航班。试试这个开始:

$url = "http://www.sportingpulse.com/comp_info.cgi?c=1-5917-0-232432-0&a=STATS&sgroup=floor";
$html = file_get_contents($url);
$doc = DOMDocument::loadHTML($html);

$xpath = new DOMXPath($doc);

$query = "/your/xpath/query/here";

$entries = $xpath->query($query);

有关xpath查询的详细信息,请查看此链接。 http://php.net/manual/en/domxpath.query.php 另一个很棒的参考:http://www.w3schools.com/xpath/xpath_syntax.asp

登陆后我会检查并添加更多细节。

答案 2 :(得分:0)

我使用http://simplehtmldom.sourceforge.net/这样的事情。然后,您可以迭代该表中的每个tr,并检查第二个td(在您的情况下)的链接是否为== SOL。如果是这样,您可以从下一个tds读取数据。请参阅http://simplehtmldom.sourceforge.net/manual.htm。如果您需要进一步的帮助,我可以给您一个代码示例。

最诚挚的问候 斯蒂芬S.