☰ PHPBoutsDeCodes
 

Bouts de codes PHP

Eval en php

$motto = 'Hello';
$str = '<h1>Welcome</h1><?php echo $motto?><br/>';
eval("?> $str <?php ");

Vérifier si un string est un string UTF8

function detectUTF8($string)
{
    return preg_match('%(?:
        [xC2-xDF][x80-xBF]             # non-overlong 2-byte
        |xE0[xA0-xBF][x80-xBF]        # excluding overlongs
        |[xE1-xECxEExEF][x80-xBF]{2} # straight 3-byte
        |xED[x80-x9F][x80-xBF]        # excluding surrogates
        |xF0[x90-xBF][x80-xBF]{2}     # planes 1-3
        |[xF1-xF3][x80-xBF]{3}         # planes 4-15
        |xF4[x80-x8F][x80-xBF]{2}     # plane 16
        )+%xs', 
    $string);
}

Inclure un fichier dans un include

Par exemple, si file1.php doit inclure file2.php, quelle que soit la configuration du serveur.

<?php  
include realpath( dirname(__FILE__) ) . "/file2.php";  
?>

Connaître l'extension d'un nom de fichier

$ext = substr(strrchr($NomFichier, '.'),1);

ou encore

$path_info = pathinfo($filename);
$ext = $path_info['extension'];

Connaître le nom sans extension

$nom = substr($NomFichier , 0 , strpos($NomFichier,'.'));

Générer un nom de fichier unique

function getName($pre="",$suf="") {
  $tmpname = microtime();
  $tmpname = str_replace(array(' ','.'),'',$tmpname);
  return $pre.$tmpname.$suf;
  //EXEMPLES
  //$filename1 = getName("uploads/");
  //$filename2 = getName();
}

Supprimer récursivement un répertoire

 function deltree($dir) {
 	if (is_file($dir)) return false;
 	if (!is_dir($dir)) return true;
 	$current_dir = opendir($dir);
 	while($entryname = readdir($current_dir)) {
 		if (($entryname != '.' and $entryname!='..')) {
 			if (is_dir($dir.'/'.$entryname)) {
 				if (!deltree($dir.'/'.$entryname)) return false;
 			} else {
 				if (!@unlink($dir.'/'.$entryname)) return false;
 			}
 		}
 	}
 	closedir($current_dir);
 	return @rmdir($dir);
 }

Création récursive d'un répertoire

 function mkdirs($dir) {
   if (is_dir($dir)) { return true; }
   $pdir = dirname($dir);
   if (!mkdirs($pdir)) { return false; }
   return mkdir($dir,fileperms($pdir));
 }

ou, sur les versions récentes de PHP:

mkdirs($dir, true)

Supprimer les espaces et lignes vides inutiles d'un document html

$html = preg_replace("`>[ \t]*\n\s*<`s" , ">\n<" , $html);

Lister toutes les variables déclarées dans un script php

$vars = getdefinedvars();
print_r($vars);

Affichage d'un nombre

Le plus simple est d'utiliser la fonction number_format

Passer une variable php à javascript

Il faut remplacer les quotes simples, doubles et les 4 LineTerminator: Line Feed (n, U+000A), Carriage Return (r, U+000D), Line separator (U+2028) et Paragraph separator (U+2029).

<?php
function php2js($str){
	$from = array("\", "'", '"', "\r", "\n", "\xE2\x80\xA8", "\xE2\x80\xA9");
	$to = array('\\\\', '\\\'', '"', '\r', '\n', '\u2028', '\u2029');
	return str_replace($from, $to, $str);
}
$str =  "C'est un
exemple";
$str=php2js($str);
?>
<script>
	alert('<?= $str ?>');
</script>

Si des balises <script> existent dans le texte de la variable passée, il faut les scinder pour que le navigateur ne génère pas d'erreur.

$str = preg_replace("/<script/i", '<scr"+"ipt', $str);
$str = preg_replace("/<\/script/i", '</scr"+"ipt', $str);