Согласно этой теме, и особенно этому сообщению: https://stackoverflow.com/a/6595973/1125465, Microsoft as всегда выпендривается. Размер пользовательского агента может быть действительно огромным.
Я работаю над небольшой библиотекой посетителей на php, и я хочу хранить информацию пользовательского агента. Я не могу определиться с типом данных и длиной.
Итак, мой вопрос: есть ли у вас идеи, как сократить пользовательский агент до "нормального" размера? (например, 256 символов).
Примечание. Разработчики используют пользовательские агенты для обнаружения браузера пользователя и операционных систем. Итак, согласно связанному примеру, все глупые числа из M $ просто ... Просто есть. Как всегда действует нам на нервы. Итак, идея состоит в том, чтобы сделать функцию, которая сокращает строку пользовательского агента, но не теряет важную информацию.
Я считаю, что такая функция должна:
- Не зависит от будущих обновлений и новых браузеров (без жестко запрограммированных строк)
- Имейте простой механизм, который решает, что удалять (например, если есть число, запятая, число, запятая, число, запятая, число, ..., он может удалить это, это не интересно).
- И в конце, если все операции по-прежнему приводят к слишком длинному пользовательскому агенту (скажем, 256 символов), больше нечего делать, поэтому просто отключите остальные. Это один на миллион, поэтому данные могут быть потеряны.
Дополнительное примечание: Я знаю, что могу создать функцию, которая получает браузер и тип ОС из пользовательского агента и сохраняет только эти значения. Но, как всегда, такие функции имеют жестко запрограммированные имена, и если браузер не распознается, он, например, возвращает «Нераспознанный браузер». Так что в будущем все должны помнить об обновлении этих функций. И если мы сохраним сокращенный пользовательский агент, информация не будет не потеряно (поскольку только сценарий, который читает базу данных, должен иметь новую систему распознавания). Но записи в базе данных надежны и согласованы, как и должно быть.
ОБНОВЛЕНИЕ: так как должен быть какой-то код, и есть проблема с идеей, а не проблема с существующим кодом, я напишу минимальный код, который я написал до сих пор;):
<?php
function shorten($useragent, $maxsize = 256) {
$shorten = $useragent;
... // ?
$shorten = substr($shorten, 0, $maxsize); // the "last hope" cut
return $shorten;
}
echo shorten($_SERVER['HTTP_USER_AGENT']);
?>
preg_replace()
и просто сохранить то, что вам нужно. - person ThePixelPony   schedule 19.05.2014