Funzioni generiche per ogni uso

MarcoGrazia

Utente Attivo
15 Dic 2009
764
15
18
58
Udine
www.stilisticamente.com
Ciao,
nella pratica di tutti i giorni si ha bisogno di semplici funzioni che svolgano sempre lo stesso compito, e ci ritroviamo a dover reinventare la ruota ogni volta; filosofia questa, vietata ad ogni buon programmatore, che invece deve condividere quanto creato.
Quindi ecco alcune mie funzioni che uso continuamente, commentate per l'uso pratico.

Funzioni per la data
PHP:
date_default_timezone_set('Europe/Rome');
$mesi = array( '','gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre' );
$mesiNum = array( '','gennaio'=>1,'febbraio'=>2,'marzo'=>3,'aprile'=>4,'maggio'=>5,'giugno'=>6,'luglio'=>7,'agosto'=>8,'settembre'=>9,'ottobre'=>10,'novembre'=>11,'dicembre'=>12 );
$settimana = array( '', 'lunedì','martedì','mercoledì','giovedì','venerdì','sabato','domenica' );

/**
*	Verifica il formato di una data se ISO8601
*      Ritorna la data se verificata o false se non è in un formato valido.
*/
function verificaData( $date, $format = 'Y-m-d' ) {
	$d = \DateTime::createFromFormat( $format, $date );
	if ( $d && $d->format($format) == $date ) return $date; else return false;
}	//	verificaData()

/**
*   Trasforma una data in formato ISO8601 in forma leggibile per umani.
*   ISO8901 = ANNO-MESE-GIORNO
*/
function ISO2Uman($dataIso) {
	global $mesi;
	list($anno, $mese, $giorno) = explode('-', $dataIso);
return (string)$giorno . ' ' . $mesi[(int)$mese] . ' ' . (string)$anno;
}	//	ISO2Uman()

/**
*	Genera la data odierna
*      Se chiamata con true come parametro ( default ) inserisce pure il giorno della settimana.
*      Se non lo si vuole, passarla con false come parametro.
*/
function dataOdierna( $settimana = true ) {
	global $mesi, $settimana;
	if ( $settimana ) {
		return $settimana[(int)date( 'N' )] . ', ' . date( 'd' ) . ' ' . $mesi[(int)date( 'n' )] . ' ' . date( 'Y' );
	} elseif( $settimana == false ) {
		return date( 'd' ) . ' ' . $mesi[(int)date( 'n' )] . ' ' . date( 'Y' );
	}
}	//	dataOdierna()
Funzioni per il trimming dei valori passati via POST o GET
PHP:
/**
*	Verifica un indirizzo email nel formato indirizzo@email.tld
*      Torna false se non è verificato o l'indirizzo se verificato.
*/
function verificaEmail( $valore ) {
	$sanitized = filter_var( $valore, FILTER_SANITIZE_EMAIL );
	if ( filter_var( $sanitized, FILTER_VALIDATE_EMAIL )) {
		return $sanitized;
	}
return false;
}	//	verificaEmail()

/**
* 	Filtra un URL
*      Torna false se non è verificato o l'indirizzo nel caso venga verificato
*/
function verificaURL($url) {
	$url = filter_var($url, FILTER_SANITIZE_URL);
	if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
		return $url;
	} else {
		return false;
	}
}	//	verificaURL()

/**
*	Verifica una stringa per il tipo di caratteri passati
*      Mantiene solo numeri e caratteri, non usare per le password prevedono anche caratteri grafici.
*/
function verificaStringa( $valore ) {
	$options = array ( 'flags' => array( 'FILTER_FLAG_STRIP_LOW', 'FILTER_FLAG_STRIP_HIGH' ));
	$valore = filter_var( $valore, FILTER_SANITIZE_STRING, $options );
return $valore;
}	//	verificaStringa()

/**
*	Effettua il trimming dei dati passati alla funzione
*      Uso con gli array, soprattutto quelli globali come POST, GET, ecc.
*      Uso: array_walk($_POST, 'trimValue');
*/
function trimValue( &$value ) {
	if ( !is_array( $value )) $value = trim( $value, " \t\n\r\0\x0B" );
}	//	trimValue()
Generatori di codice ( per uniqid o password, ecc. )
PHP:
/**
 *	Genera un numero unico da usarsi per password e salt.
 * 	$length = numero di caratteri da usarsi in uscita.
*/
function makeUnique ($length=16) {
   $salt       = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
   $len        = strlen($salt);
   $makepass   = '';
   mt_srand(10000000*(double)microtime());
   for ($i = 0; $i < $length; $i++) {
	   $makepass .= $salt[mt_rand(0,$len - 1)];
   }
return $makepass;
}	//	makeUnique()

/**
*	Crea una password casuale sulla base di makeUnique() con 10 caratteri come valore predefinito.
*/
function creaPassTemp( $caratteri = 10 ) {
return makeUnique( $caratteri );
}	//	creaPass()
Tutte queste funzioni le ho messe in un file unico che allego all'occorrenza, ovviamente niente vieta di inserirle altrove o fare più file.
Anzi sarebbe interessante se qualcuno ha altre funzioni a tema di crearne ancora, potrebbe uscrine un MrWebmasterGenericFileFunction.inc.php chissà.
 
  • Like
Reactions: Alex_70