parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

G_Z 12.08.2013 00:48 / 12.08.2013 00:50

Если вам известен маркер, то проще всего искать по нему.
Вплоть до
^if(^agent.pos[Windows NT 6.1] > -1){}
Если нужно не просто проверить платформу, а работать с каждым сегментом, то нужно разобрать заголовок на части и проверять каждую.
@detect[agent][user_agent]
$result[^hash::create[]]

$user_agent[^agent.match[…;i]]
^if($user_agent){
	$result.product[
		$.name[$user_agent.1]
		$.version[$user_agent.2]
	]
	$result.os[
		$.name[$user_agent.3]
		$.version[$user_agent.4]
	]
	$result.layout[
		$.engine[$user_agent.5]
		$.version[$user_agent.6]
	]
	$result.browser[
		$.name[$user_agent.7]
		$.version[$user_agent.8]
	]}

@some_method[]$user_agent[^detect[$agent]]

# проверки
^swith[$user_agent.os.version]{
	^case[6.0]{Vista}
	^case[6.1]{7}}
Учтите, что формат User-Agent вольный и полноценный разбор довольно сложен.
Стоит либо ограничиться общими проверками, либо поискать готовое решение, которое можно вызывать и получать разобранный результат.