Forum

You are not logged in.

#1 22-09-2017 18:33:44

jachampagne
Membre
Registered: 22-09-2017
Posts: 5

[PHP] Quelques fonctions utiles

Bonsoir,
Développeur sur de nombreux langages, puisque le forum propose une section développement, je me permets de partager avec vous quelques fonctions PHP bien pratiques sur différents domaines pour la création de vos sites web.

Chacune des fonctions est suffisamment commentée pour en comprendre le fonctionnement et l'utilité, alors vous pouvez prendre et ré-utiliser celles que vous voulez smile.

date-helper.php

date_to_french : convertit une Date SQL au format français

/**
* Convertit une "Date" en date française
*
* NOTE : Permet depuis une date SQL de récupérer une chaîne de la
*            forme "10 janvier 2014" (avec ou sans les heures)
*
* @param $sql_date Une date au format SQL à convertir
* @param $compact La date doit-elle être affichée de manière compacte ? (jj/mm/aaaa)
* @param $time La date doit-elle comporter l'heure ?
* @return Une date française
*/
if(!function_exists('date_to_french'))
{
	function date_to_french($sql_date, $compact = false, $time = false)
	{
		if($time)
			list($date, $time) = explode(' ', $sql_date);
		else
			list($date) = explode(' ', $sql_date);
		
		list($year, $month, $day) = explode('-', $date);

		if($time)
			list($hour, $minute, $seconde) = explode(':', $time);

		$months = 
		[
			'janvier', 'février', 'mars', 'avril', 'mai', 'juin',
	    	'juillet', 'août', 'septembre', 'octobre', 'novembre', 
	    	'décembre'
	    ];

		if($compact && $time)
			return $day.'/'.$month.'/'.$year.' à '.$hour.'h'.$minute;
		else if($compact && !$time)
			return $day.'/'.$month.'/'.$year;	
		else if(!$compact && $time)
			return $day.' '.$months[$month-1].' '.$year.' à '.$hour.'h'.$minute;

	    return $day.' '.$months[$month-1].' '.$year;
	}
}

relative date : convertit une Date au format "il y a X jours" (ou heures, minutes, ...)

/**
* Retourne une date sous la forme "il y a x heures"
*
* @param $date Une date à convertir (ex : 2014-03-04 23:42:15)
* @return Une date relative
*/
if(!function_exists('relative_date'))
{
	function relative_date($date)
	{
		$date = new DateTime($date);
		$dateNow = new DateTime('now');

		$differenceDate = $date->diff($dateNow);

		if($date > $dateNow)
			$prefix = 'dans ';
		else
			$prefix = 'il y a ';

		$years = $differenceDate->format('%y');
		$months = $differenceDate->format('%m');
		$days = $differenceDate->format('%d');
		$hours = $differenceDate->format('%h');
		$minutes = $differenceDate->format('%i');
		//$seconds = $differenceDate->format('%s');

		if($years != 0)
		{
			$relativeDate = $prefix.$years.' an'.(($years > 1) ? 's' : '');
			
			if($months >= 6)
				$relativeDate .= ' et demie';
		}
		else if($months != 0)
		{
			$relativeDate = $prefix.$months.' mois';

			if($days >= 15)
				$relativeDate .= ' et demie';
		}
		else if($days != 0)
			$relativeDate = $prefix.$days.' jour'.(($days > 1) ? 's' : '');
		else if($hours != 0)
			$relativeDate = $prefix.$hours.' heure'.(($hours > 1) ? 's' : '');
		else if($minutes != 0)
			$relativeDate = $prefix.$minutes.' minute'.(($minutes > 1) ? 's' : '');
		else
			$relativeDate = 'à l\'instant';

		return $relativeDate;
	}
}

age : Donne l'âge à partir d'une Date.

/**
* Retourne un âge à partir d'une date de naissance
*
* @param $date_naissance Une date à convertir (format : aaaa-mm-jj)
* @return Un âge correspondant à la date de naissance
*/
if(!function_exists('age'))
{
	function age($date_naissance) 
	{
	    $date_today = new DateTime();
	    $date_naissance = new DateTime($date_naissance);

	    $age = $date_naissance->diff($date_today);

	    return $age->format('%y');
	}
}
ip-helper.php

get_ip : Retourne l'IP d'un utilisateur.

/**
* Retourne l'IP de l'utilisateur
*
* @return L'IP de l'utilisateur, ou faux sinon
*/
if(!function_exists('get_ip'))
{
	function get_ip()
	{
		if(isset($_SERVER['HTTP_CLIENT_IP'])) //IP sur un Internet partagé
			return $_SERVER['HTTP_CLIENT_IP'];
		else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) //ÎP lors de l'utilisation d'un proxy
			return $_SERVER['HTTP_X_FORWARDED_FOR'];
		else
		{
			if(isset($_SERVER['REMOTE_ADDR']))
				return $_SERVER['REMOTE_ADDR'];

			return false;
		}
	}
}
url-helper.php

url_exists : vérifie si une URL est valide.

/**
* Teste si une URL est valide
*
* @param $url L'URL à vérifier
* @return Vrai si l'URL est valide, faux sinon
*/
if(!function_exists('url_exists'))
{
	function url_exists($url)
	{
		$headers = @get_headers($url, 1);

		if(preg_match('#OK#i', $headers[0]))
			return true;

		return false;
	}
}

str_to_url : convertit une chaîne en URL optimisée SEO (pour le référencement)

/**
* Transforme une chaîne de caractères en URL optimisée
*
* @param $str La chaîne à transformer
* @return Une URL optimisée pour le référencement
*/
if(!function_exists('str_to_url'))
{
	function str_to_url($str)
	{
		//Suppression des espaces en début et fin de chaîne
		$str = trim($str);

		//Remplacement des caractères accentués
		$special_characters = 
		[
			'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 
			'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 
			'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā', 
			'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 
			'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 
			'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 
			'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Œ', 'œ', 
			'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 
			'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', 
			'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 
			'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ'
	    ];

        $normal_characters = 
        [
        	'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 
        	'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 
        	'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 
        	'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 
        	'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 
        	'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 
        	'l', 'L', 'l', 'L', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 
        	'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 
        	'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 
        	'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 
        	'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o'
        ];

        $str = str_replace($special_characters, $normal_characters, $str);

        //Passage en minuscule
        $str = mb_strtolower($str, 'UTF-8');

		//Suppression des tirets multiples
        $str = preg_replace('#([-]+)#', '-', $str);

        //Suppression des autres caractères spéciaux
        $str = preg_replace('#[^a-zA-Z0-9_]+#', '-', $str);

        //Remplacement des espaces et apostrophes par des tirets
        $str = str_replace(' ', '-', $str);
        $str = str_replace("'", '-', $str);

        //Suppression des tirets en début et fin de chaîne
        $str = trim($str, '-');

		return $str;
	}
}

---------------------------------------

Bon codage et à bientôt smile !

Last edited by jachampagne (22-09-2017 18:37:17)

Offline

Board footer

Powered by FluxBB