Astuces PHP
Par Keul le vendredi, 31 décembre 2010, 21:57 - Lien permanent
Quelques astuces PHP pour :
- Traitemer des dates
- Obtenir le résumé d'un texte UTF-8 (sans couper les mots)
- Envoyer un mail en texte HTML en UTF-8
- Connexions à une base de donnée
Traitemer des dates :
//conversion unix en date
date('(G)H: i: s (j)d/(n)m/(y)Y ',$timestamp);
// heure:minute:seconde jour/mois/année ()=sans zero initiaux
date('N W U c',$timestamp);
// joursemaine semaineannée unix ISO-8601
//conversion date en unix
$timestamp=mktime($heure,$minutes,$secondes,$mois,$jour,$annee))
//gestion de dates dans mySQL
$date_MYSQL=date('Y-m-d G:i:s',$timestamp);
$timestamp=strtotime($date_MYSQL);
//travail sur les dates
$timestamp=strtotime("+6 day",$timestamp);
Obtenir le résumé d'un texte UTF-8 (sans couper les mots) :
function utf8summary($str,$l) {
if (mb_strlen($str) > $l && $l) {
$s = preg_split('/([\s]+)/u',$str,-1,PREG_SPLIT_DELIM_CAPTURE);
$res = '';
$L = 0;
if (mb_strlen($s[0]) >= $l) {
return mb_substr($s[0],0,$l);
}
foreach ($s as $v) {
$L = $L+strlen($v);
if ($L > $l) {
break;
} else {
$res .= $v;
}
}
return trim($res).'[...]';
}
return $str;
}
Envoyer un mail en texte9HTML en UTF-8 :
function mail_html_utf8($dest,$sujet,$contenu,$cc='',$bcc='') {
$eol=strtoupper(substr(PHP_OS,0,3) == 'WIN') ? "\r\n" : "\n";
//message en HTML
$message = "--main boundary".$eol;
$message .= "Content-Type: text/html; charset=UTF-8".$eol;
$message .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
$message .= $contenu.$eol.$eol;
//message en texte
$message = "--main boundary".$eol;
$message .= "Content-Type: text/plain; charset=UTF-8".$eol;
$message .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
$message .= strip_tags($contenu).$eol.$eol;
//fin messages alternatifs
$message .= "--main boundary--".$eol;
//gestion des cc/bcc
$cc=($cc!='')?'Cc: '.$cc.$eol:'';
$bcc=($bcc!='')?'Bcc: '.$bcc.$eol:'';
//envoi du mail (fonction mail)
$mailsend = mail($dest,'=?UTF-8?B?'.base64_encode($sujet).'?=',$message,
'From:'.$config['email_sender'].$eol.$cc.$bcc.
'Reply-To: '.$config['email_sender'].$eol.
'X-Mailer: PHP'.phpversion().$eol.
'MIME-Version: 1.0'.$eol.
'Content-type: multipart/alternative; boundary="main boundary"');
return $mailsend;
}
Connexion à une base de donnée :
//proteger texte
function db_esc($txt) {
global $db;
return mysql_real_escape_string($txt,$db);
}
//connection à la base
function db_connect($file, $line, $host, $port, $user, $password, $dbname) {
if (!function_exists('mysql_connect'))
die('Le module PHP mySQL n\'est pas installé.');
if (($this->db = @mysql_connect($host.':'.$port,$user,$password,true)) === false)
die(sprintf('Impossible d\'établir une connection avec la base de données à l\'adresse %s:%s.',$host,$port));
//base de donée en utf-8
mysql_query("SET NAMES 'utf8'",$db);
mysql_query("SET CHARACTER SET utf8",$db);
if(!@mysql_select_db($dbname, $db))
die(sprintf('Impossible de sélectionner la base de données %s à l\'adresse %s:%s.',$name,$host,$port));
}
//requête
function db_query($file, $line, $query) {
$GLOBALS['lastrequest']=$query;
$ressource=@mysql_query($query,$this->db) or die(sprintf('Erreur avec une requête [%s (ligne %s), requête «%s»: %s]',$file,$line,$query,mysql_error($db)));
$retour=array();
while($data = mysql_fetch_assoc($ressource))
$retour[]=$data;
return $retour;
}
//Exemple
$sql = "SELECT .....";
db_query($sql,__FILE__,__LINE__);
Derniers commentaires