У меня есть страница, которая автоматически получает две случайные записи из базы данных MySQL и просит пользователя сравнивать их каждый раз, когда страница обновляется. Как я могу автоматически преобразовать эти две строки в первый результат изображения Google для них? Это то, что я до сих пор:
<?php //I retrieve the names and group names here//
$firstpersonaName = (string) $row["personaName"];
$firstpersonaGroupName = (string) $row["groupName"];
$firstpersonaGroupNameForGoogle = preg_split('( )', $firstpersonaGroupName);
?> //then convert any group names containing spaces into arrays here//
<?php //then here I build the query that displays a google image page//
$newname = '';
foreach ($firstpersonaGroupNameForGoogle as $firstpersonaPartofGroupName) {
$newname = $firstpersonaPartofGroupName . '+';
}
$newname = rtrim($newname, "+");
echo "https://www.google.com/search?q=" . $firstpersonaName . "+" . $newname . '&tbm=isch';
?>
Это дает мне такие вещи, как: https://www.google.com/search?q=charlie+always+sunny&TBM = Isch
Итак, как мне взять эту ссылку и превратить ее в ссылку первого изображения? Или любой из первой пары на самом деле. (В этом случае: http://cdn3.denofgeek.us/sites/denofgeekus/files/sunny_0.jpg)
Итак, вот что я в итоге сделал, чтобы случайным образом сгенерировать два изображения на запрос:
Сначала я скачал это и добавил в тот же каталог, что и веб-страница: http://simplehtmldom.sourceforge.net/
Затем я просто добавил этот PHP-код в div, где я хотел, чтобы появилась картинка:
<?php
// Include the php dom parser
include_once 'simple_html_dom.php';
//build the google images query
$newname = '';
foreach ($firstpersonaGroupNameForGoogle as $firstpersonaPartofGroupName) {
$newname = $firstpersonaPartofGroupName . '+';
}
$newname = rtrim($newname, "+");
//echo "https://www.google.com/search?q=" . $firstpersonaName . "+" . $newname . '&tbm=isch';
$newname = "https://www.google.com/search?q=" . $firstpersonaName . "+" . $newname . '&tbm=isch';
//use parser on queried page
$html = file_get_html($newname);
//echo $html;
//create an array for all pics on page
$picarray = array();
$picurl = '';
// Find all images
foreach($html->find('img') as $element) {
//echo $element->src . '<br>';
$picurl = $element->src;
array_push($picarray,$picurl);
}
//then pick two random ones
$picurl = $picarray[array_rand($picarray)];
echo "<img src=" . $picurl . ">";
$picurl = $picarray[array_rand($picarray)];
echo "<img src=" . $picurl . ">";
?>
Они довольно маленького разрешения (около 150 пикселей), но на самом деле это прекрасно работает с тем, что я пытаюсь сделать. Если вы хотите получить не миниатюрное изображение, это совсем другая банка червей.
Других решений пока нет …