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


Get part of contents from another url using PHP

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

我发现有几个网站有这个,并在页面刷新时显示随机配方,但其中一些需要3-4秒加载,我试图避免这种情况。

所以我找到了这个网站:http://www.shotdrinks.com/p/recipes/…它没有"显示随机食谱"的功能。然而,这个网站上的每个食谱都有编号,所以它们可以通过在url末尾添加1到11000之间的任何数字来"调用"。外汇。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中。所以我试着"隔离"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); 

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

我做错了什么?这是"正确"的做法吗?

可以这样使用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)