LibCode
PHP: Как определить поворот изображения с помощью exif_read_data()
Что такое EXIF и зачем он нужен
EXIF (Exchangeable Image File Format) — это стандарт, позволяющий добавлять к изображениям и другим файлам метаданные: информацию о камере, настройках съёмки, дате, геолокации и ориентации снимка.
Эти данные записываются камерой или смартфоном при создании фото и могут быть прочитаны специальными инструментами, в том числе PHP‑функцией
exif_read_data().Как EXIF хранит информацию о повороте
Ключевой параметр для определения поворота — поле Orientation (ориентация). Оно принимает значения от
1 до 8, каждое из которых описывает определённое положение камеры при съёмке:
1: нормальное положение (0°);3: повёрнуто на 180°;6: повёрнуто на 90° по часовой стрелке;8: повёрнуто на 90° против часовой стрелки.
Остальные значения (2, 4, 5, 7) описывают зеркальные повороты, которые встречаются реже.
Практический пример на PHP
Шаг 1. Чтение EXIF‑данных
Используйте функцию
exif_read_data(), чтобы получить метаданные изображения:
ВыделитьPHP
$exifData =- Жалоба
PHP: Регулярные выражения: Расширенные возможности
Расширенные возможности регулярных выражений в PHP позволяют решать более сложные задачи, такие как обработка текста, очистка данных и защита от уязвимостей. Рассмотрим некоторые из этих возможностей.
Захват групп: Группы позволяют извлекать определенные фрагменты текста:
Обратные ссылки: Обратные ссылки позволяют использовать захваченные группы в замене:
Positive Lookahead: Проверяет, что после текущего положения есть определенный паттерн:
Negative Lookahead: Проверяет, что после текущего положения нет определенного паттерна:
Positive Lookbehind: Проверяет, что...
Захват групп и обратные ссылки
Захват групп: Группы позволяют извлекать определенные фрагменты текста:
ВыделитьPHP
preg_match('/(\d+) (\w+)/', '123 apples', $matches);
// $matches[1] => '123', $matches[2] => 'apples'Обратные ссылки: Обратные ссылки позволяют использовать захваченные группы в замене:
ВыделитьPHP
preg_replace('/(\w+) (\w+)/', '$2, $1', 'John Doe');
// Результат: 'Doe, John'Утверждения (Lookahead и Lookbehind)
Positive Lookahead: Проверяет, что после текущего положения есть определенный паттерн:
ВыделитьPHP
preg_match('/apple(?= pie)/', 'I love apple pie'); // Вернет trueNegative Lookahead: Проверяет, что после текущего положения нет определенного паттерна:
ВыделитьPHP
preg_match('/apple(?! pie)/', 'I love apple juice'); // Вернет truePositive Lookbehind: Проверяет, что...
PHP: Регулярные выражения: Разбор URL с помощью preg_match
Регулярные выражения (регэкспы) — мощный инструмент для работы с текстом, позволяющий решать широкий спектр задач, связанных с поиском, извлечением и обработкой данных. Одна из распространенных задач — разбор URL-адресов, когда нужно извлечь отдельные части (модуль, тип, идентификатор) из URL. В этой статье мы рассмотрим, как это сделать с помощью функции
Рассмотрим шаблон регулярного выражения, который помогает извлечь части URL:
preg_match() в PHP.Пример регулярного выражения
Рассмотрим шаблон регулярного выражения, который помогает извлечь части URL:
ВыделитьPHP
preg_match('%^/(?<module>[-\w\d]+)(?:/(?<type>[-\w\d]+))?(?:/(?<id>[-\w\d]+))?/?$%', $urlPath, $match);Разбор регулярного выражения
%^/: начало строки, после которого идёт косая черта (/).(?<module>[-\w\d]+): именованная группа захвата для выделения модуля. Допускаются буквы, цифры, тире и подчёркивание.(?:/(?<type>[-\w\d]+))?: необязательная группа захвата для типа. Опционально присутствует после косой черты.(?:/(?<id>[-\w\d]+))?: необязательная группа захвата для идентификатора. Опционально
JavaScript: Как получить URL текущей страницы
На JavaScript можно легко получить полный адрес текущей страницы с помощью объекта
...
window.location.Объекты и свойства, которые помогут получить полный URL
window.location.href: возвращает полный URL текущей страницы.window.location.protocol: возвращает протокол (например,http:илиhttps:).window.location.host: возвращает хост (например,example.comилиsub.example.com).window.location.pathname: возвращает путь (например,/folder/file.html).window.location.search: возвращает строку запроса (например,?param=value).window.location.hash: возвращает фрагмент (часть после символа#).
Пример использования
ВыделитьJavaScript
console.log(window.location.href); // Полный URL страницы
console.log(window.location.protocol); // Протокол (например, http:, https:)
console.log(window.location.host); // Домен (например, example.com)
console.log(window.location.pathname); // Путь (например, /folder/file.html)
console.log(window.location.search); // Строка запроса (например,Как выбрать оптимальное условие в SQL-запросах
Эффективное составление SQL-запросов — ключевой фактор производительности и корректности работы с базами данных. Одно из важнейших решений при составлении запроса — выбор правильного условия отбора данных. В этой статье мы рассмотрим, как выбрать оптимальное условие для ваших запросов.
Типичные условия SQL-запросов
- Операторы сравнения (
=,!=,<,>,<=,>=):
Самые распространённые операторы для сравнения значений. - Условия диапазонов (
BETWEEN,IN,NOT IN):
Используются для отбора данных в пределах диапазона или множества значений. - Агрегативные функции (
SUM,AVG,MIN,MAX):
Помогают анализировать большие объёмы данных. - Паттерны (
LIKE,ILIKE):
Работают с текстовыми полями, осуществляя поиск по образцам. - Специальные условия (
EXISTS,IS NULL,IS NOT NULL):
Проверяют наличие данных или их отсутствие.
Критерии выбора условий
- Эффективность:
Чем быстрее запрос выполнится, тем лучше. Всегда оценивайте стоимость запроса (особенно для больших баз данных). - Производительность:
Использование индексов
