functionen browser_selector() retunerer et associative array der har følgende nøgler:
['browser'], ['browserversion'], ['os']
nøglen
os er pt den eneste du skal bruge, men browser og browservertion kan du muligvis bruge senere
if(strstr($ua, 'j2me')) {
$os = 'mobile';
}
søger i useragentstring (HTTP_USER_AGENT), om ordet j2me er i, hvis den er, er
os et mobilt os, ellers tester jeg om næste ord er i stringen, og gør det sammen
det er grundlæggende det sammen som det "Daniele Buttigli @ 24.12.12 12:38" linker til, bare med mulighed for mere detaljerings grad
Daniele's har bare ennu flere med, så en sammenskrivning kunne være på sin plads
if(!preg_match('/opera|webtv/i', $ua) && preg_match('/msie\s(\d)/', $ua, $array)) {
$browser = 'ie'; $browserversion=$array[1];
}
her bruges bare preg_match til at søge med, da det giver andre muligheder, bla. anvendelse af regulære udtryk, og opdeling i array
'/opera|webtv/i' => indeholder stringen "opera" eller "webtv" ?? stringen er ikke følsom over for store/små borgstaver
/msie\s(\d)/ => der skal søges efter "/msie" der skal efterfølges af en string, der skal efterfølges af ( og et tal )
der anvendes / til at afgrænse start/slut af udtrykket, man kan dog anvende andre tegn
kunne feks se sådan ud '#opera|webtv#i', hvilke man typisk gør hvis / indgår som en del af udtrykket, alternativt skal man escape / hvilke også er meget brugt
Kan jeg ikke også gøre noget i den her still:
jo, borset fra du kun bør convaterer til lowercase en gang, og der rigtig mange mobiler, og som du også kan se af den liste Daniele linkede til.
det smarte ved en function er at det er nemt at genbruge, andre steder, og kun skal vedligeholdes
et sted
så napper vi den function Daniele linkede til vil din code se sådan ud:
<?php
/* jeg sætter en default parameter på så der er mulighed for at teste med andre stringe selvvalgte stringe */
// bør ligge i en extern fil afh genbrug
function detect_mobile($ua=null) {
$ua = ($ua) ? $ua : $_SERVER['HTTP_USER_AGENT'];
// retunerer true hvis $ua indeholder et af følgende ord: se listen neden for, stringen er ikke følsom over for store/små bogstaver
return (preg_match('/(alcatel|amoi|android|avantgo|blackberry|benq|cell|cricket|docomo|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mmp|mobi|motorola|nec-|nokia|palm|panasonic|philips|phone|playbook|sagem|sharp|sie-|silk|smartphone|sony|symbian|t-mobile|telus|up\.browser|up\.link|vodafone|wap|webos|wireless|xda|xoom|zte)/i', $ua));
}
if(detect_mobile() ) {
header('Location: http://mobil.navn.dk/');
}
else{
header('Location: http://www.navn.dk/');
}
?>