PHP: cambiare dinamicamente foglio di stile

spaginescion2012. Coerentemente col passato -forse per tradizione- anche la versione 9 di internet explorer si conferma incompatibile con standard anche non troppo recenti e nel quadro che ne viene fuori, i webdesigner sono ancora costretti a ricorrere ad hack e magheggi vari.

Per situazioni particolarmente intricate, si potrebbe ricorrere ad una soluzione radicale, che consiste nella redazione di un foglio di stile ad hoc e di uno switch, che consenta di indirizzare il client  su di esso quando necessario. Vediamo come realizzarlo con php.

Ciò di cui ci avvarremo è l'array globale  $_SERVER, ed in particolare del contenuto di HTTP_USER_AGENT , posizione di esso nella quale vengono memorizzati i dati relativi al browser in uso sul client connesso.

Senza dilungarci troppo nella teoria, quello che segue è il codice bell'e pronto, da personalizzare con il path dei propri css.

Tale script va incluso o incollato nell'header della vostra pagina, laddove era presente in origine il link al foglio di stile esterno.

<?php

if (preg_match('/MSIE/i', $_SERVER['HTTP_USER_AGENT']))
$css= "path/completo/al/css/dedicato/a/speciale.css";
else $css="path/completo/al/css/normale.css";

?>

<link rel="stylesheet" type="text/css" media="all" href="<?=$css ?>" />

Dato che il valore di user agent è decisamente lungo (si stampi un output della variabile per rendersene conto), in questo script si ricorre alla funzione preg_match, per cercare al suo interno un'espressione regolare significativa  (link alla guida: se volete approfondire), che nel nostro caso è   '/MSIE/i' ed indica che si sta usando internet explorer.

Non vi resta che scrivere il css (...magari su tavole di pietra).

Autore: Luigi Lacquaniti

Web designer freelance.

Condividi su