Според тази тема и по-специално тази публикация: https://stackoverflow.com/a/6595973/1125465, Microsoft като винаги се показва. Размерът на потребителския агент може да бъде наистина, наистина огромен.
Работя върху малка библиотека за посетители в 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