Как определить ширину экрана PHP

Содержание
Введение
Пример кода на PHP
Результат
Комментарии к коду
Проверить ваш HTTP_USER_AGENT
Похожие статьи

Введение

Из этой статьи вы узнаете о том, что PHP не предназначен для определения ширины экрана, а также о том как определить тип устройства с помощью юзер агента.

Часто бывает нужно заранее знать ширину экрана. В CSS за это отвечает тэг @media.

Например, если Вы не хотите показывать блок класса .rightBanner на экранах уже 1000px , Вы просто пишете

@media screen and (max-width: 1000px) { .rightBanner {display: none;} }

И браузер, получив такой CSS от сервера, скроет блок .rightBanner на узких экранах.

Определить реальную текущую ширину экрана можно с помощью JavaScript про это есть статья

«Опеределить ширину экрана с помощью JavaScript»

Но, что если Вы вообще не хотите отдавать браузеру какой-то контент. Чтобы сэкономить трафик или ускорить загрузку страницы.

Встаёт вопрос - как определить ширину экрана уже на этапе формирования ответа сервера.

Ответ - никак. По крайне мере если Вам нужна точная ширина и Вы не планируете делать финты с AJAX.

Если Вам просто нужно понять зашёл ли посетитель с мобильного устройства или с десктопа - это я покажу ниже

РЕКЛАМА хостинга Beget, которым я пользуюсь более десяти лет

Изображение баннера

Конец рекламы хостинга Beget, который я всем рекомендую.

Пример кода на PHP

<?php function isMobile() { return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); } $not_mobile = !(isMobile()); if ($not_mobile) { echo' <div class="rightBanner"> </div> ' }; ?>

Результат

Если браузер клиента передал один из упомянутых заголовков, то правый блок вообще не будет ему послан.

Комментарии к коду

preg_match возвращает 1 если найдёт в $_SERVER["HTTP_USER_AGENT"] один из перечисленных заголовков: android, avantgo, blackberry и так далее.

В таком случае $not_mobile это 0 или FALSE и условие if не выолняется.

Список заголовков наверняка уже устарел, когда Вы читаете эту статью, но, во-первых, Вы сами можете его дополнить. Во-вторых нужны ли все возможные заголовки или достаточно основных решать Вам.

Если Вы не собираетесь использовать функцию повторно, можно ограничиться строчкой:

$not_mobile = !(preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|MiuiBrowser|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]));

Ваш HTTP_USER_AGENT

В следующем блоке вы можете увидеть свой HTTP_USER_AGENT

Сегодня:

2025-04-22

Ваш HTTP_USER_AGENT:

CCBot/2.0 (https://commoncrawl.org/faq/)

Проверка - распознал ли скрипт ваше устройство как мобильное или нет

Ваше устройство не распознано как мобильное

Если скрипт неверно распознал ваше устройство - напишите мне в телеграм @andreyolegovichru

Автор статьи: Андрей Олегович

Похожие статьи
PHP
Массивы
Циклы, ветвления
Дата и время. Часовые пояса
gettype(): определить тип переменной PHP
json_decode
Как получить ширину экрана с помощью PHP
Узнать свой HTTP_USER_AGENT
Классы в PHP 8
substr: обрезать строку
Запросы к REST API на PHP
$_SERVER['REQUEST_URI']: текущая url
Работа с базами данных
Работа с cookies
PHP sessions
Аутентификация и авторизация в PHP 8
Мои скрипты
Разбор ошибок

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы. Если там пусто считайте это рекламой моей телеги

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: