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