Pokemon_JOJO

Le Blog du Pokemon !

“Et non ce n'est pas un blog sur les pokemons! Ici, vous trouverez des articles sur la programmation (JavaScript, CSS, et PHP), ainsi que d'autres choses plus ou moins utiles souvent en rapport avec Linux... ou pas”
07
juil

PHP – Remplacer les caractères spéciaux et accents par leur correspondance ASCII

Publié dans PHP, 6 commentaires

Voici une fonction pour enlever tous les caractères spéciaux et accents d’une chaîne de caractères en respectant l’encodage. (fonctionne pour l’UTF8). Les caractères sont remplacés par leur plus proche correspondance ASCII (sans accent)

function strtoascii()

/**
 * Remplace les caractères spéciaux par leur plus proche
 * correspondance ASCII (sans accent)
 * 
 * @info http://www.mibhouse.org/pokemon_jojo
 *
 * @param string $str
 * @param string $encoding
 *
 * @return string $str
 */
function strtoascii($str, $encoding = 'utf-8') {
	mb_regex_encoding($encoding); // jeu de caractères courant pour les expressions rationnelles. 
 
	// Tableau des corespondance
	$str_ascii = array(
		'A'		=> 'ÀÁÂÃÄÅĀĂǍẠẢẤẦẨẪẬẮẰẲẴẶǺĄ',
		'a'		=> 'àáâãäåāăǎạảấầẩẫậắằẳẵặǻą',
		'C'		=> 'ÇĆĈĊČ',
		'c'		=> 'çćĉċč',
		'D'		=> 'ÐĎĐ',
		'd'		=> 'ďđ',
		'E'		=> 'ÈÉÊËĒĔĖĘĚẸẺẼẾỀỂỄỆ',
		'e'		=> 'èéêëēĕėęěẹẻẽếềểễệ',
		'G'		=> 'ĜĞĠĢ',
		'g'		=> 'ĝğġģ',
		'H'		=> 'ĤĦ',
		'h'		=> 'ĥħ',
		'I'		=> 'ÌÍÎÏĨĪĬĮİǏỈỊ',
		'J'		=> 'Ĵ',
		'j'		=> 'ĵ',
		'K'		=> 'Ķ',
		'k'		=> 'ķ',
		'L'		=> 'ĹĻĽĿŁ',
		'l'		=> 'ĺļľŀł',
		'N'		=> 'ÑŃŅŇ',
		'n'		=> 'ñńņňʼn',
		'O'		=> 'ÒÓÔÕÖØŌŎŐƠǑǾỌỎỐỒỔỖỘỚỜỞỠỢ',
		'o'		=> 'òóôõöøōŏőơǒǿọỏốồổỗộớờởỡợð',
		'R'		=> 'ŔŖŘ',
		'r'		=> 'ŕŗř',
		'S'		=> 'ŚŜŞŠ',
		's'		=> 'śŝşš',
		'T'		=> 'ŢŤŦ',
		't'		=> 'ţťŧ',
		'U'		=> 'ÙÚÛÜŨŪŬŮŰŲƯǓǕǗǙǛỤỦỨỪỬỮỰ',
		'u'		=> 'ùúûüũūŭůűųưǔǖǘǚǜụủứừửữự',
		'W'		=> 'ŴẀẂẄ',
		'w'		=> 'ŵẁẃẅ',
		'Y'		=> 'ÝŶŸỲỸỶỴ',
		'y'		=> 'ýÿŷỹỵỷỳ',
		'Z'		=> 'ŹŻŽ',
		'z'		=> 'źżž',
		// Ligatures
		'AE'		=> 'Æ',
		'ae'		=> 'æ',
		'OE'		=> 'Œ',
		'oe'		=> 'œ'
	);
 
	// Convertion
	foreach ($str_ascii as $k => $v) {
		$str = mb_ereg_replace('['.$v.']', $k, $str);
	}
 
	return $str;
}

J’ai essayé de regrouper tous les caractères spéciaux que je connaissais. Si il en manque, n’hésitez pas à me le signaler.

04
juil

Détecter le navigateur utilisé avec $_SERVER['HTTP_USER_AGENT'] en PHP

Publié dans PHP, 3 commentaires

Ayant besoin de définir des accès spécifiques à un back office en fonction du navigateur client utilisé (ex. pour ne pas autoriser IE). Ne voulant pas utiliser get_browser() (qui nécessite browscap.ini). J’ai créé une fonction PHP qui vous permet de détecter le navigateur utilisé, la version et le système d’exploitation d’un internaute en utilisant la variable $_SERVER['HTTP_USER_AGENT'].

function get_browser_agent()

/**
 * Permet de détecté le navigateur client utilisé
 * 
 * @info http://www.mibhouse.org/pokemon_jojo/
 * 
 * @param string $return Valeur de retour demandée
 *
 * @return string|array
 */
function get_browser_agent($return = false) {
	global $browser_agent;
 
	if($return)
		$return = strtolower($return);
 
	// Navigateurs connu
	if($return && $return == 'browsers') {
		return array(
			'firefox'	=> 'browser',
			'shiretoko'	=> 'browser', // nom de code de firefox 3.5 dev
			'msie'		=> 'browser',
			'opera'		=> 'browser',
			'chrome'	=> 'browser',
			'safari'	=> 'browser',
			'mozilla'	=> 'browser',
			'seamonkey'	=> 'browser',
			'konqueror'	=> 'browser',
			'netscape'	=> 'browser',
			'gecko'		=> 'browser',
			'navigator'	=> 'browser',
			'mosaic'	=> 'browser',
			'lynx'		=> 'browser',
			'amaya'		=> 'browser',
			'omniweb'	=> 'browser',
			'avant'		=> 'browser',
			'camino'	=> 'browser',
			'flock'		=> 'browser',
			'aol'		=> 'browser',
 
			'googlebot'	=> 'spider',
			'msnbot'	=> 'spider',
			'yahoo'		=> 'spider',
			'ask'		=> 'spider',
 
			'itunes'	=> 'other',
		);
	}
	// Plateforme connue
	else if($return && $return == 'platforms') {
		return array(
			'android'	=> array('android'),
			'freebsd'	=> array('freebsd'),
			'linux'		=> array('linux'),
			'iphone'	=> array('iphone'),
			'zune'		=> array('zune'),
			'mac'		=> array('macintosh', 'mac platform x', 'mac os x'),
			'win'		=> array('windows', 'win32'),
		);
	}
 
	if(!isset($browser_agent)) {
		$browser_agent = array(
			'name'		=> false,
			'version'	=> 0,
			'platform'	=> false,
			'userAgent' 	=> $_SERVER['HTTP_USER_AGENT'] 
		);
 
		// Navigateur + Version
		foreach(get_browser_agent('browsers') as $browser => $type) {
			if (preg_match("#($browser)[/ ]?([0-9.]*)#", strtolower($browser_agent['userAgent']), $match)) {
				$browser_agent['name'] = $match[1];
				// Hack safari
				if($browser_agent['name'] == 'safari' && preg_match("#version[/ ]?([0-9.]*)#", strtolower($browser_agent['userAgent']), $match)) {
					$browser_agent['version'] = $match[1];
				}
				else
					$browser_agent['version'] = $match[2];
 
				if($type == 'spider')
					$browser_agent['platform'] = $type;
 
				break;
			}
		}
 
		// OS
		if(!$browser_agent['platform']) {
			foreach(get_browser_agent('platforms') as $platform => $values) {
				if(!$browser_agent['platform']) {
					foreach($values as $value) {
						if (strpos(strtolower($browser_agent['userAgent']), $value)) {
							$browser_agent['platform'] = $platform;
							break;
						}
					}
				}
				else
					break;
			}
		}
	}
 
	if($return && isset($browser_agent[$return]))
		return $browser_agent[$return];
	else if(!$return)
		return $browser_agent;
	else
		return false;
}

Exemples d’utilisations

Exemple 1 : informations du navigateur

<?php
$browser = get_browser_agent();
print_r($browser);
?>

L’exemple ci-dessus va afficher quelque chose de similaire à :

Array
(
    [name] => opera
    [version] => 9.64
    [platform] => linux
    [userAgent] => Opera/9.64 (X11; Linux i686; U; fr) Presto/2.1.1
)

Exemple 2 : nom du navigateur

<?php
$browser_name = get_browser_agent('name');
print_r($browser_name);
?>

L’exemple ci-dessus va afficher quelque chose de similaire à :

opera

Exemple 3 : autoriser des navigateurs en tenant compte de leurs versions

Il peut être utile de connaitre le navigateur utilisé et sa version pour par exemple autorisé l’accès à une application web uniquement aux navigateurs compatibles.

<?php
// Detection du navigateur
$browser = get_browser_agent();
 
// Navigateurs autorisés (avec la version minimum requise)
$browser_allowed = array(
	'shiretoko'		=> '3.5',
	'firefox'		=> '3.0',
	'opera'		=> '9.0',
);
 
// Le navigateur est t'il autorisé?
if(array_key_exists($browser['name'], $browser_allowed) && version_compare($browser['version'], $browser_allowed[$browser['name']], '>='))
	$autorized = true; 
else
	$autorized = false; 
 
print_r($browser);
 
if($autorized)
	echo 'Votre navigateur est compatible. Vous êtes autorisé à accéder à l\'application.';
else
	echo 'Votre navigateur n\'est pas compatible. Vous n\'êtes pas autorisé à accéder à l\'application.';
?>

L’exemple ci-dessus va afficher quelque chose de similaire à :

Array
(
    [name] => opera
    [version] => 9.64
    [platform] => linux
    [userAgent] => Opera/9.64 (X11; Linux i686; U; fr) Presto/2.1.1
)
Votre navigateur est compatible. Vous êtes autorisé à accéder à l'application.

Remarques et utilisations

Vous êtes bien entendu autorisé à utiliser cette fonction dans vos propres scripts. Si tel est le cas, n’hésitez pas à me laisser un petit message, ça fait toujours plaisir ;) . Évidemment vos commentaires, suggestions et améliorations sont toujours les bienvenues.

25
oct

PBB MagicWheel 1.0

Publié dans Javascript, ajouter un commentaire

PBB MagicWheel

PBB MagicWheel permet de créer facilement une « Roue magique » ;) avec la possibilité d’ajouter une réflection aux images ainsi qu’une tooltips qui s’affiche au survol. Cette class javascript est pour Mootools 1.2

Fonctionnalités

  • Très simple d’utilisation
  • Reflection possible des images
  • Tooltips
  • Entièrement configurable
  • Ajout automatique d’icons/images possible

En savoir plus

Retrouvez toutes les informations concernant PBB MagicWheel sur la page du projet :

24
oct

Mootools 1.2 « offline » HTML Documentation

Publié dans Javascript, 3 commentaires

Mootools

Une fois n’est pas coutume, je me suis retrouvé sans connexion internet à devoir coder du javascript avec Mootools 1.2. Seul problème, je n’est pas trouvé de documentation « offline » fiable et facile à utiliser. (les chm en images c’est pas tip top).

La version en ligne de la documentation pour mootools 1.2 étant très bien faite, j’en ai fait une version « offline » au format HTML.

Télécharger

Télécharger la Documentation Mootools 1.2 au format HTML

16
oct

PBB DatePicker 1.0 beta

Publié dans Javascript, 1 commentaire

PBB DatePicker

PBB DatePicker est une class javascript accessible et « unobtrusive » qui permet d’ajouter facilement un « DatePicker » (en forme de calendrier) à vos formulaires. Cette class est une compilation de plusieurs « DatePickers » que j’ai épurée, améliorée et ré-écrite pour Mootools 1.2

J’ai essayé d’y inclure les fonctionnalités qui me paraissaient les plus utiles sans en faire une usine à gaze.

Fonctionnalités

  • Apparence du calendrier facilement modifiable grâce aux CSS et sa structure XHTML
  • Format de la date entièrement configurable similaire à la fonction date en PHP
  • Langue des jours de la semaine et des mois configurable
  • Navigation au clic et à la molette par Mois et Années
  • Détection automatique du focus

En savoir plus

Retrouvez toutes les informations concernant PBB DatePicker sur la page du projet :

RSS du blog

© Copyright 2010 Pokemon_JOJO