Un petit post assez bref pour vous informer que j’ai sur le feu un parseur de log aMsn.
Ceux-ci sont dans leur format natif, vraiment pas agréables et même faciles à lire. Et pour avoir le parseur integré à aMsn on est obligé d’avoir le client aMsn ouvert et connecté. Je trouvais cela un peu contraignant et donc je me suis mis comme défi de faire un parseur php rendant un résultat plus que décent en HTML.
Une très jolie fille est venue m’expliquer un jour que le client de la boite où elle travaillait avait demandé un design qui changeait selon qu’on soit le jour ou la nuit.
Les développeurs locaux n’avaient aucune idée de comment faire. Ils ont tous d’abord regardé du coté d’un javascript pouvant récupérer l’heure et transformer le design comme il fallait. Ils ont aussi émit l’idée d’utiliser un CSS généré à la volée par php (mais je trouvais ça beaucoup trop lourd personnellement).
C’est là que j’ai trouvé l’idée toute conne suivante : et si on utilisait un css pour la structure, qu’on en retirait toute les couleurs ou images importées qui doivent changer dans un autre css. On garderait un css ‘struct.css’ et on ajouterai un css appellé ‘jour.css’, le deuxième ‘nuit.css’. Vous voyez où je veux en venir ?
Il peut s’avérer intéressant de récupérer le code renvoyé dans la réponse HTTP dans un script.
Quelques codes comme exemples :
200: OK
302: Déplacé mais trouvé
403: Accès interdit
404: Page Introuvable
500: Erreur serveur
Voici comment faire (je vous fourni un bout de code commenté, des explications plus complètes se trouvent en dessous de ce dernier) :
function ch_url($urlParam){
// On récupère l'ancien level d'error reporting
$levelBefore = error_reporting();
//Le fopen d'une url sur un serveur qui n'existerait plus par exemple fait un très moche message d'erreur, on les déactive donc
error_reporting(0);
//Ouverture de la connexion
if (!$fp = fopen($urlParam, 'r')) {
error_reporting($levelBefore);
return "404";
}
//On récupère les données du stream
$meta = stream_get_meta_data($fp);
//On prend la donnée qui nous intéressé dans l'objet et on la transforme comme on veut (voir si dessous pour l'explication)
$return = explode(' ',$meta['wrapper_data'][0]);
//On ferme proprement la connexion
fclose($fp);
//On replace le niveau d'erreur
error_reporting($levelBefore);
//Et on renvoie le résultat
return $return[1];
}
/*On fait s'afficher la réponse de notre fonction pour une url étant passé par GET
(script.php?url=http://lgnap.helpcomputer.org/ par exemple)
*/
echo ch_url($_GET['url']);