最近的一个项目涉及到我从Web上获取随机图像并以某种特定方式使用它。 我选择使用PHP访问Google图片以获取随机图片网址。 该图像可以是通用图像,也可以与特定主题相关。
这是查询Google图片并返回图片网址的PHP函数:
function GetRandomImageURL($topic='', $min=0, $max=100)
{
// get random image from Google
if ($topic=='') $topic='image';
$ofs=mt_rand($min, $max);
$geturl='http://www.google.ca/images?q=' . $topic . '&start=' . $ofs . '&gbv=1';
$data=file_get_contents($geturl);
$f1='<div id="center_col">';
$f2='<a href="/imgres?imgurl=';
$f3='&imgrefurl=';
$pos1=strpos($data, $f1)+strlen($f1);
if ($pos1==FALSE) return FALSE;
$pos2=strpos($data, $f2, $pos1)+strlen($f2);
if ($pos2==FALSE) return FALSE;
$pos3=strpos($data, $f3, $pos2);
if ($pos3==FALSE) return FALSE;
return substr($data, $pos2, $pos3-$pos2);
}
此函数生成一个随机数,将其作为带有图像查询的“开始”参数发送给Google,并获取生成的HTML代码。
参数“ gbv = 1”是必需的-如果没有该参数,Google将返回通用页面而不是图像结果。
如果找不到任何标记($ f1,$ f2或$ f3),该函数将返回FALSE。 否则,将解析第一个图像(来自“ start”参数),并检索相应的URL。
请注意,Google可能会在此过程中更改其HTML,从而使此功能过时。 另外,较大的“开始”值似乎超出了Google愿意显示的图像数量。 在撰写本文时,最大值约为980。
$ topic参数允许您指定某种图像类型。 通过“车辆”,以车辆图像为目标; 通过“气球”,..好吧,你明白了。 请注意,这不能保证专注于某个主题,因为有人可能发布了带有“气球”作为图像标签的图片,但该图片中没有任何气球。
尽管可以使用任何随机化函数,但由于速度和合理的随机性,此处使用mt_rand()。
此示例函数演示了上面的GetRandomImageURL()函数的用法:
function ShowRandomImage($topic='')
{
echo('<table border="1"><tr><td>');
$url=GetRandomImageURL($topic);
if ($url==FALSE) echo('Error while searching');
else {
echo(htmlentities($url) . '<br />');
echo('<img width="640" src="' . $url . '" />');
}
echo('</td></tr></table>');
}
ShowRandomImage();
ShowRandomImage('rothschild');
请享用!
From: https://bytes.com/topic/php/insights/911682-retrieve-random-image-url-google-php