Добавлено: 30.09.2017 / 20:42
# Iron_Man (30.09.2017 / 20:17)
Не выводит картинку, прописал свой путь
Криво прописал.
Добавлено: 30.09.2017 / 22:47
Я решил немного изменить логику скрипта, чтобы он парсил сайт-донор только один раз, при первом его запуске. По сути, набор браузеров мобильных устройств не так уж часто там обновляется, и поэтому нет необходимости в регулярном скачивании массива с удалённого сервера.
Теперь при первом старте скрипт скачает набор юзер-агентов, и запишет их в текстовый файл. А при всех последующих запусках скрипт будет работать уже с текст. файлом. Выгода очевидна - прирост производительности =)
* (+/-)
<?php
// Иконка телефона
$phone = 'https://icon-icons.com/icons2/984/PNG/512/Untitled-1-06_icon-icons.com_75119.png';
// Иконка ПК
$pc = 'http://s1.iconbird.com/ico/2014/1/620/w512h5121390853998notebook512.png';
// Отображение иконки (телефон или пк)
echo show_device($phone, $pc);
function logging_device($base, &$devices) {
$url = 'http://www.useragentstring.com/pages/'.
'useragentstring.php?typ=Mobile%20Browser';
$page = file_get_contents($url);
preg_match_all('~<li><a[^>]*>([^<]+)</a></li>~', $page, $devices);
$devices = $devices[1];
file_put_contents($base, join(PHP_EOL, array_map('md5', $devices)), LOCK_EX);
}
function show_device($phone, $pc) {
$base = 'devices.txt';
$devices = file_exists($base) ? file($base, FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES) : [];
// Если файл пуст, запишем в него массив агентов
!empty($devices) ?: logging_device($base, $devices);
$img = in_array(md5($_SERVER['HTTP_USER_AGENT']), $devices) ? $phone : $pc;
return '<img src="'. $img .'" width="35" height="35" alt="" />';
}
Для наглядности добавил пару переменных, в которых прописал по умолчанию адреса иконок.
UPD: Добавил шифрование элементов массива, чтобы текст файл не сильно увеличивался в объёме.