使用PHP从另一个URL获取部分内容

时间:2013-06-03 07:10:18

标签: php url html

我正在尝试制作一个每次运行时都会显示随机饮料配方的脚本。

我找到了几个拥有此功能的网站,并在刷新页面时显示随机配方,但其中一些需要3-4秒才能加载,我正在努力避免这种情况。

所以我找到了这个网站:http://www.shotdrinks.com/p/recipes/ ...没有“显示随机食谱”特征。但是,此站点上的每个配方都已编号,因此可以通过在URL末尾添加1到11000之间的任意数字来“调用”它们。 FX。 http://www.shotdrinks.com/p/recipes/4000

因此,我每次运行时都会使用此代码显示随机配方:

$min=1;
$max=11000;
$number=rand($min,$max);
$link = file_get_html("http://www.shotdrinks.com/p/recipes/$number");

但是,这会显示整页,菜单等。我只需要标题,玻璃类型,成分和混合方向。这些是不同的div,fx。这些成分被称为“rIngredients”。所以我尝试了这个,以“隔离”div:

$link = file_get_contents("http://www.shotdrinks.com/p/recipes/$number");
$file = strip_tags($link, "<div>");
preg_match_all("#<div class=\"rIngredients\">(?:[^<]*)<\/div>#i", $file, $content);
print_r($content); 

但是我不能让它工作,只是输出一个空数组。

我做错了什么?这是做这样的事情的“正确”方式吗?

1 个答案:

答案 0 :(得分:2)

您可以这样使用DOMDocument

$doc = new DOMDocument;
$doc->loadHTMLFile('http://example.org/path/to/data');

$ingredients = $doc->getElementsByClassName('rIngredients');

echo $doc->saveHTML($ingredients);

自5.3.6以来,->saveHTML()的可选参数已添加;另一种方法是使用->saveXML($ingredients)