Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Site Web > PHP > Vos Fonctions ou astuces > Lecture du sujet

Vos Fonctions ou astuces

Vous devez être inscrit pour pouvoir poster des messages

Page : Précédente  1  2  3  ...  94  95  96  97  98  99  100  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  ...  94  95  96  97  98  99  100  Suivante
Hors ligne azmeuk # Posté le 15/11/2008 à 15:43:03
n'a Jamais peur de la vapeur
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
Je ne comprend pas bien ta critique. Pourrais-tu me dire ça plus clairement ?
L'ordre de fermeture est inverse à celui d'ouverture. Que veux-tu dire au sujet de la mise en forme ?
Pourquoi trouves-tu la fonction lourde ? Comment l'améliorerais-tu alors ?

Tant que j'y suis j'ai réamélioré les fonctions de miniature et de redimensionnement d'image de la page précédente. Le redimensionnement pour des images plus hautes que larges en passant $y=0 dans les deux fonctions buggait, et deux trois trucs ont été améliorés.
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
/* resize redimensionne une image à la taille $x*$y
 * Si $y = 0 alors l'image reste aux proportions mais avec la plus grande longueur/largeur de $x pixels.
 */
function resize($url_image , $x , $y = 0){
	$taille = getimagesize($url_image);
	$extension=strtolower(substr($url_image,strrpos($url_image, ".")+1));
	
	if ($y == 0){
	  $valeur_maximum = $x;
		$x = ($taille[0] >= $taille[1]) ? $valeur_maximum : intval(($taille[0] * $valeur_maximum) / $taille[1]);
		$y = ($taille[0] >= $taille[1]) ? intval(($taille[1] * $valeur_maximum) / $taille[0]) : $valeur_maximum;
	}
	
	$source = ($extension == 'png')  
		? imagecreatefrompng ($url_image) 
		: imagecreatefromjpeg($url_image);
	$destination = imagecreatetruecolor($x , $y);
	imagecolortransparent($destination, imagecolorallocate($destination, 0, 0, 0));
	imagealphablending($destination, false);
	imagesavealpha($destination, true);
	imagecopyresampled($destination , $source ,0 , 0 , 0 , 0 , $x , $y , $taille[0] , $taille[1]);
	unlink($url_image);
	$extension == 'png' 
		? imagepng ($destination , $url_image) 
		: imagejpeg($destination , $url_image);
}

/* Miniature créé la miniature d'une image 
 * Si $y = 0 alors l'image reste aux proportions mais avec la plus grande longueur/largeur de $x pixels.
 * Si $destination est un répertoire (ex : foo/) alors la miniature aura le nom de l'image originale et sera placée dans $destination
 * Si $destination est un chemin d'accès (ex : foo/bar.png) alors la miniature sera $destination
 * Si $destination est un nom de fichier (ex : foo.png) alors la miniature sera nommée $destination et sera placée dans le répertoire de l'image d'origine
 * Si $destination est vide alors le nom de la miniature sera celui de l'image d'origine préfixé de $prefixe et sera placé dans le même répertoire
 * Si $destination est vide et $prefixe est vide alors $prefixe = min_
 */
function miniature($image, $x, $y = 0, $destination = '', $prefixe = ''){
	$repertoire = substr($image, 0, strrpos($image, DIRECTORY_SEPARATOR));
	$repertoire = $repertoire ? $repertoire : '.';
	$repertoire_destination = substr($destination, 0, strrpos($destination, DIRECTORY_SEPARATOR));
	$repertoire_destination = $repertoire_destination ? $repertoire_destination : $repertoire;

  //Si le nom de l'image miniaturisée est le même que celui de l'image d'origine et qu'il n'y a pas de préfixe alors on force le préfixe
  $prefixe = $destination || $prefixe ? $prefixe : 'min_';

  $nom_image = str_replace(DIRECTORY_SEPARATOR, '', strtolower(substr($image,strrpos($image, DIRECTORY_SEPARATOR))));
	$fichier_destination = str_replace(DIRECTORY_SEPARATOR, '', substr($destination, strrpos($destination, DIRECTORY_SEPARATOR)));
	$fichier_destination = trim($fichier_destination) 
	  ? $fichier_destination 
	  : $nom_image;
	$fichier_destination = $prefixe.$fichier_destination;
	
  $extension = strtolower(substr($nom_image,strrpos($nom_image, ".")+1));
	$taille = getimagesize($image);

	$source = ($extension == 'png') 
		? imagecreatefrompng ($image) 
		: imagecreatefromjpeg($image);
		
	//On récupère les dimensions de la miniature
	if(!$y){
	  $valeur_maximum = $x;
	  if($taille[0] <= $valeur_maximum && $taille[1] <= $valeur_maximum){
	    $x = $taille[0];
	    $y = $taille[1];
	  }else{
  		$x = ($taille[0] >= $taille[1]) ? $valeur_maximum : intval(($taille[0] * $valeur_maximum) / $taille[1]);
  		$y = ($taille[0] >= $taille[1]) ? intval(($taille[1] * $valeur_maximum) / $taille[0]) : $valeur_maximum;
    }
	}
	
	$miniature = imagecreatetruecolor($x , $y);
	imagecolortransparent($miniature, imagecolorallocate($miniature, 0, 0, 0));
	imagealphablending($miniature, false);
	imagesavealpha($miniature, true);
	imagecopyresampled($miniature, $source, 0, 0, 0, 0, $x, $y, $taille[0], $taille[1]);	

	$extension == 'png'
		? imagepng ($miniature , $repertoire_destination.DIRECTORY_SEPARATOR.$fichier_destination) 
		: imagejpeg($miniature , $repertoire_destination.DIRECTORY_SEPARATOR.$fichier_destination);
}
?>
 
Hors ligne Talus # Posté le 15/11/2008 à 16:08:16
タルス
Avatar
Groupe : Membres
Ben faire trois quatre boucles pour faire ce que tu fais, et aussi d'autres trucs (genre le double array_flip(), alors que la fonction array_unique() existe...), c'est lourd. Surtout avec des regex (elles pourraient aussi etre mieux faites, au passage :p).

Pour afficher un extrait, je pense qu'il vaut mieux carrément amputer le texte de telles balises, et c'est tout :p. Simple, rapide, efficace.
Édité le 15/11/2008 à 16:08:36 par Talus
 
Hors ligne Cortexd # Posté le 15/11/2008 à 22:17:31
Maouunnwww !
Avatar
Groupe : Membres
il y a plus simple azmeuk :
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
function close_xhtml($xhtml)
{
    $tags = array();

    for ($i = 0; preg_match('`<(/?)([a-z]+)(?:\s+[a-z]+="[^"]*")*>`i', $xhtml, $tag, PREG_OFFSET_CAPTURE, $i); $i = strlen($tag[0][0]) + $tag[0][1])
    {
        if ($tag[1][0] != '/')
        {
            $tags[] = $tag[2][0];
        }
        elseif ($tag[2][0] == end($tags))
        {
            array_pop($tags);
        }
        else
        {
            throw new RuntimeException('bad xhtml');
        }
    }

    $xhtml = preg_replace('`<[^>]*$`', '', $xhtml);

    while ($tag = array_pop($tags))
    {
        $xhtml .= '</'.$tag.'>';
    }

    return $xhtml;
}

le masque peut être modifié pour accepter les espaces dans l'écriture des attributs

Comme l'or, il est caresse et volupté...
Image utilisateur Arrêt sur image


 
Hors ligne azmeuk # Posté le 17/11/2008 à 14:15:50
n'a Jamais peur de la vapeur
Avatar
Groupe : Membres
Hors ligne azmeuk # Posté le 30/11/2008 à 03:01:06
n'a Jamais peur de la vapeur
Avatar
Groupe : Membres
D'autres améliorations sur les fonctions d'image.
Plus de types d'images sont supportés, et le type d'image est détecté par le mime-type plutôt que par l'extension.
Code : PHP
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<?php
/* resize redimensionne une image à la taille $x*$y
 * Si $y = 0 alors l'image reste aux proportions mais avec la plus grande longueur/largeur de $x pixels.
 */
function resize($url_image , $x , $y = 0){
  //On vérifie les dimensions
  if($x <= 0 || $y < 0)
    return 1;  
    
  //On crée l'image à manipuler, et au passage on vérifie que le type d'image est bien supporté et que l'image existe
  $image_type = exif_imagetype($url_image);
  switch($image_type){
    case IMAGETYPE_GIF:
      $source = imagecreatefromgif($url_image);
    break;
    
    case IMAGETYPE_JPEG:
      $source = imagecreatefromjpeg($url_image); 
    break;
    
    case IMAGETYPE_PNG:
      $source = imagecreatefrompng($url_image);
    break;        
    
    case IMAGETYPE_WBMP:
      $source = imagecreatefromwbmp($url_image);
    break;
    
    case IMAGETYPE_XBM:
      $source = imagecreatefromxbm($url_image);
    break;        
    
    default:
      return 2;
    break;
  }
  
	$taille = getimagesize($url_image);
	
	if ($y == 0){
	  $valeur_maximum = $x;
		$x = ($taille[0] >= $taille[1]) ? $valeur_maximum : intval(($taille[0] * $valeur_maximum) / $taille[1]);
		$y = ($taille[0] >= $taille[1]) ? intval(($taille[1] * $valeur_maximum) / $taille[0]) : $valeur_maximum;
	}
  
	$destination = imagecreatetruecolor($x , $y);
	imagecolortransparent($destination, imagecolorallocate($destination, 0, 0, 0));
	imagealphablending($destination, false);
	imagesavealpha($destination, true);
	imagecopyresampled($destination , $source ,0 , 0 , 0 , 0 , $x , $y , $taille[0] , $taille[1]);
	unlink($url_image);

  switch($image_type){
    case IMAGETYPE_GIF:
	    imagegif($destination , $url_image);
    break;
    
    case IMAGETYPE_JPEG:
	    imagejpeg($destination , $url_image);
    break;
    
    default:
    case IMAGETYPE_PNG:
	    imagepng($destination , $url_image);
    break;        
    
    case IMAGETYPE_WBMP:
	    imagewbmp($destination , $url_image);
    break;
    
    case IMAGETYPE_XBM:
	    imagexbm($destination , $url_image);	
    break;        
    
  }
	
	return 0;
}

/* Miniature créé la miniature d'une image 
 * Si $y = 0 alors l'image reste aux proportions mais avec la plus grande longueur/largeur de $x pixels.
 * Si $destination est un répertoire (ex : foo/) alors la miniature aura le nom de l'image originale et sera placée dans $destination
 * Si $destination est un chemin d'accès (ex : foo/bar.png) alors la miniature sera $destination
 * Si $destination est un nom de fichier (ex : foo.png) alors la miniature sera nommée $destination et sera placée dans le répertoire de l'image d'origine
 * Si $destination est vide alors le nom de la miniature sera celui de l'image d'origine préfixé de $prefixe et sera placé dans le même répertoire
 * Si $destination est vide et $prefixe est vide alors $prefixe = min_
 */
function miniature($image, $x, $y = 0, $destination = NULL, $prefixe = NULL){
  //On vérifie les dimensions
  if($x <= 0 || $y < 0)
    return 1;

  //On crée l'image à manipuler, et au passage on vérifie que le type d'image est bien supporté
  $image_type = exif_imagetype($image);
  switch($image_type){
    case IMAGETYPE_GIF:
      $source = imagecreatefromgif($image);
    break;
    
    case IMAGETYPE_JPEG:
      $source = imagecreatefromjpeg($image); 
    break;
    
    case IMAGETYPE_PNG:
      $source = imagecreatefrompng($image);
    break;        
    
    case IMAGETYPE_WBMP:
      $source = imagecreatefromwbmp($image);
    break;
    
    case IMAGETYPE_XBM:
      $source = imagecreatefromxbm($image);
    break;        
    
    default:
      return 2;
    break;
  }
    
	$repertoire = substr($image, 0, strrpos($image, DIRECTORY_SEPARATOR));
	$repertoire = $repertoire ? $repertoire : '.';
	$repertoire_destination = substr($destination, 0, strrpos($destination, DIRECTORY_SEPARATOR));
	$repertoire_destination = $repertoire_destination ? $repertoire_destination : $repertoire;
	
  //Si le nom de l'image miniaturisée est le même que celui de l'image d'origine et qu'il n'y a pas de préfixe alors on force le préfixe
  $prefixe = $destination || $prefixe ? $prefixe : 'min_';
  
  $nom_image = str_replace(DIRECTORY_SEPARATOR, '', strtolower(substr($image,strrpos($image, DIRECTORY_SEPARATOR))));
	$fichier_destination = str_replace(DIRECTORY_SEPARATOR, '', substr($destination, strrpos($destination, DIRECTORY_SEPARATOR)));
	$fichier_destination = trim($fichier_destination) 
	  ? $fichier_destination 
	  : $nom_image;
	$fichier_destination = $prefixe.$fichier_destination;
	
  $extension_destination = strtolower(substr($fichier_destination,strrpos($fichier_destination, ".")+1));
	$taille = getimagesize($image);
		
	//On récupère les dimensions de la miniature
	if(!$y){
	  $valeur_maximum = $x;
	  if($taille[0] <= $valeur_maximum && $taille[1] <= $valeur_maximum){
	    $x = $taille[0];
	    $y = $taille[1];
	  }else{
  		$x = ($taille[0] >= $taille[1]) ? $valeur_maximum : intval(($taille[0] * $valeur_maximum) / $taille[1]);
  		$y = ($taille[0] >= $taille[1]) ? intval(($taille[1] * $valeur_maximum) / $taille[0]) : $valeur_maximum;
    }
	}
	
	$miniature = imagecreatetruecolor($x , $y);
	imagecolortransparent($miniature, imagecolorallocate($miniature, 0, 0, 0));
	imagealphablending($miniature, false);
	imagesavealpha($miniature, true);
	imagecopyresampled($miniature, $source, 0, 0, 0, 0, $x, $y, $taille[0], $taille[1]);	

	switch($extension_destination){
	  case 'gif':
	    imagegif($miniature , $repertoire_destination.DIRECTORY_SEPARATOR.$fichier_destination);
	  break;
	  
	  case 'jpg':
	  case 'jpeg':
	    imagejpeg($miniature , $repertoire_destination.DIRECTORY_SEPARATOR.$fichier_destination);
	  break;
	  
	  case 'xbm':
	    imagexbm($miniature , $repertoire_destination.DIRECTORY_SEPARATOR.$fichier_destination);	  
	  break;
	  
	  case 'png':
	  default:
	    imagepng($miniature , $repertoire_destination.DIRECTORY_SEPARATOR.$fichier_destination);
	  break;
  }

	return 0;
}
?>


En espérant que ça serve
Édité le 30/11/2008 à 12:14:47 par azmeuk
 
Hors ligne Talus # Posté le 30/11/2008 à 11:16:05
タルス
Avatar
Groupe : Membres
.... Pourquoi t'emmerder à trouver l'extension de l'image si tu as déjà le type grace à exif (Surtout qu'exif, il me semble, n'est pas partout...) ?
 
Hors ligne azmeuk # Posté le 30/11/2008 à 12:14:53
n'a Jamais peur de la vapeur
Avatar
Groupe : Membres
Pour la fonction de miniaturisation, l'image de sortie est du type que l'utilisateur désire. Donc s'il demande à la fonction de lui créer miniature.png, la fonction lui fera une image au format png.
 
Hors ligne xav13 # Posté le 01/12/2008 à 19:07:33
Groupe : Membres
Yopyop,

Je cherchais tout à l'heure une fonction pour supprimer un dossier qu'il ait du contenu ou pas. Vraisemblablement il n'y en a pas sur le fofo du sdz. En cherchant et en m'inspirant de ce que j'ai trouvé ca pourrait donner ça. Je ne suis pas vraiment l'auteur de cette fonction vu que j'ai pris un peu de tout partout mais si ça peut servir à quelqu'un d'autre^^

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?
function supprimer($dir) {

// On vérifie si c'est un dossier
is_dir($dir) or die('Ce n\'est pas un dossier');

// On ajoute un / à la fin du chemin si il est manquant
if(!preg_match("#/$#", $dir)) $dir .= '/';

// On ouvre le dossier
$handle = @opendir($dir);

// Si l'ouverture fonctionne
if($handle != false) {

// On scan le dossier
	while(false !== ($file = readdir($handle)) ) {
	   if($file != "." && $file != "..")  {
// Si c'est un dossier on réutilise la fonction
	   if(is_dir($dir.$file)) supprimer($dir.$file);
// Si c'est un fichier on le supprime
	   else unlink($dir.$file);
	   }
	}

// fermeture et suppression du dossier
	closedir($handle);
	$cloture = rmdir($dir);
}

else $cloture = false;

return $cloture;
}
?>


Voilou dites moi ce que vous en dites et si y'a moyen de l'améliorer ^^
Hors ligne Sargeros # Posté le 01/12/2008 à 21:22:50
Avatar
Groupe : Membres
Ptite modif qui sert a rien. Sinon, pense a mettre les tags en <?php .
Et j'ai modifié die() en exit() , car die() est un alias de exit() .

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
function supprimer($dir) {
	# On vérifie si c'est un dossier
	is_dir($dir) or exit("Ce n'est pas un dossier");
	
	
	# On ajoute un / à la fin du chemin si il est manquant
	
	if(!preg_match("#/$#", $dir)) $dir .= '/';
	
	
	# On ouvre le dossier
	
	$handle = @opendir($dir);
	
	
	# Si l'ouverture fonctionne
	
	if($handle != false) {
	# On scan le dossier
		
		
		while(false !== ($file = readdir($handle)) ) {
		   if($file != "." && $file != "..")  {
			   
			   
				# Si c'est un dossier on réutilise la fonction
			   
				if(is_dir($dir.$file)) supprimer($dir.$file);
				
				
				# Si c'est un fichier on le supprime
				
				else unlink($dir.$file);
		   }
		}
		
		
	# Fermeture et suppression du dossier
		
		closedir($handle);
		return rmdir($dir);
	}

	else return false;
}
Édité le 01/12/2008 à 21:31:46 par Sargeros
Hors ligne Thulium # Posté le 01/12/2008 à 21:43:34
Avatar
Groupe : Membres
Salut, unlink() renvoi une erreur si c'est un dossier, donc, plutôt qu'utiliser is_dir(), en cas d'erreur de unlink(), tu fais appelle à la récursivité.

Pour le /, ça me parrait pas du tout cool de faire un preg_match rien que pour ça, je regarde la doc et édite.

Ps: les alias n'ont pas été créé pour ne pas être utilisés ...

"Keyboard not found, press F1 to resume."
Code : Console
enfant@fils-deskop:~$ sudo apt-get autoremove vie-sociale
parent@pere-deskop:~$ echo "C'est bien mon fils, tu es devenu un Geek !"
 
Hors ligne Sargeros # Posté le 01/12/2008 à 22:03:20
Avatar
Groupe : Membres
Citation : Thulium
Ps: les alias n'ont pas été créé pour ne pas être utilisés ...

... mais il peuvent disparaitre sans avertissement dans une MAJ de PHP.
Hors ligne Talus # Posté le 01/12/2008 à 22:05:31
タルス
Avatar
Groupe : Membres
Oui, les alias ont été crées majoritairement pour des question de compatibilité. MAis il vaut mieux utiliser les "vraies" fonctions / opérateurs, car certain(e)s peuvent être amenés à disparaitre.

Woupsee, grillé \o/
Édité le 01/12/2008 à 22:05:52 par Talus
 
Hors ligne Thulium # Posté le 01/12/2008 à 22:13:41
Avatar
Groupe : Membres
ok pour les alias.
bon je dirais déjà que
<?php if(substr($dir,-1) != '/') $dir.= '/'; ?>
est plus rapide.

Ce qui nous donne :
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
function supprimer($dir)
  {
    # On vérifie si c'est un dossier
    is_dir($dir) or exit("Ce n'est pas un dossier");
    # On ajoute un / à la fin du chemin si il est manquant
    if(substr($dir,-1) != '/') $dir.= '/'; 
    # On ouvre le dossier
    $handle = @opendir($dir);
    # Si l'ouverture fonctionne
    if($handle != false)
      {
        # On scan le dossier		
        while(false !== ($file = readdir($handle)) )
          {
            if($file != "." && $file != "..")
              {
                if(!@unlink($dir.$file))
                  supprimer($dir.$file);
              }
          }
        # Fermeture et suppression du dossier
        closedir($handle);
        return rmdir($dir);
      }
    else return false;
  }
?>
Édité le 01/12/2008 à 22:18:39 par Thulium

"Keyboard not found, press F1 to resume."
Code : Console
enfant@fils-deskop:~$ sudo apt-get autoremove vie-sociale
parent@pere-deskop:~$ echo "C'est bien mon fils, tu es devenu un Geek !"
 
Hors ligne xav13 # Posté le 01/12/2008 à 22:27:31
Groupe : Membres
if(!@unlink($dir.$file))
supprimer($dir.$file);

Mhhh si je comprends bien, ça veut dire que si il arrive pas a le supprimer il relance tout le tralala pour vider le dossier de son contenu et ensuite pouvoir le rmdir? C'est un peu du pareil au même non ?^^

edit: ah oui le substr c'est sympa j'y avais pas pensé ^^
Édité le 01/12/2008 à 22:29:05 par xav13
Hors ligne Thulium # Posté le 01/12/2008 à 22:34:12
Avatar
Groupe : Membres
c'est plus optimisé.

si tu regarde dans ta fonction de base, tu as deux is_dir().

la si la suppression bug, mais que c'est un dossier, ça passe puisque tu verifies au début de la fonction, si elle bug parceque c'est un dossier, tu le vide, comme avant, mais tu as appelé moin de fonction => optimisation.

"Keyboard not found, press F1 to resume."
Code : Console
enfant@fils-deskop:~$ sudo apt-get autoremove vie-sociale
parent@pere-deskop:~$ echo "C'est bien mon fils, tu es devenu un Geek !"
 
Hors ligne xav13 # Posté le 01/12/2008 à 22:40:07
Groupe : Membres
effectivement ça permet d'avoir un is_dir en moins ^^ j'avais pas vu ça comme ca.
Hors ligne Talus # Posté le 01/12/2008 à 23:23:32
タルス
Avatar
Groupe : Membres
Perso, j'aurais plus fait un rtrim sur un slash, quitte à le rajouter un peu partout...
 
Hors ligne Dutiona # Posté le 02/12/2008 à 13:07:34
Vis pour être heureux !
Avatar
Groupe : Membres
Si on sait qu'on est sous linux (qu'on est pas en safe-mode et qu'on a les droits) : <?php $res = !shell_exec("rm -rf $dossier"); ?> :lol: !

Mais je m'égare là...


Bisous, Nyu
Édité le 02/12/2008 à 13:08:30 par Dutiona

Défiez ma brute !
Eclipse user | Ubuntu (KDE) user | php/sql/xhtml/css/xml/xsl/javascript/java/python/perl/c/scheme coder.
Framework in use: Seraframework (my own one).
In Microeisti staff.
 
Hors ligne Cortexd # Posté le 02/12/2008 à 13:20:19
Maouunnwww !
Avatar
Groupe : Membres
et sur Windows il faut exécuter :
Code : PHP
1
2
<?php
shell_exec("rd /S /Q $dir");

mais en fait l'avantage de le faire en php c'est qu'il n'y a pas à se soucier de l'OS, la fonction sera effective sans changement (ou presque :p) sur chacun des OS supportés par php
Édité le 02/12/2008 à 13:21:05 par Cortexd

Comme l'or, il est caresse et volupté...
Image utilisateur Arrêt sur image


 
Hors ligne steckdenis # Posté le 02/12/2008 à 17:01:28
Ça marche !
Avatar
Groupe : Membres
Bonjour,

Je ne sais pas si ça a déjà été dis, et si c'est le cas, je m'excuse d'avance, mais voici une fonction qui transforme un timestamp en un affichage plus joli du style il y a 3h45

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
	function format_date($date)
	{
		//Formater une date
		$d = time()-$date;
		//Format il y a xx s
		if ($d < 60)
		{
			$diff = $d;
			return "il y a $diff secondes";
		} 
		
		//Format il y a xx minutes
		if ($d < 60*60)
		{
			$diff = ceil($d/60);
			return "il y a $diff minutes";
		}
		
		//Format il y a xx heures (6 heures max)
		if ($d < 60*60*6)
		{
			$d = $d-3600;	//Le timestamp commence à 1h et non 0h
			return date('\i\l \y \a H\h i' ,$d);
		}
		//Format aujourd'hui à xx:yy heure
		if (ceil($date / 86400) == ceil(time() / 86400))	//Sur la même jounrée
		{
			return date('\a\u\j\o\u\r\d\'\h\u\i \à H\h i', $date);
		}
		//Format le xx à hh
		return date("\l\e d/m/Y \à H:i", $date);
	}
?>


  • $date est un timestamp (comme le retour de time(), etc)
  • return est une chaine de caractère


A plus.

Image utilisateur
Envie d'un projet intéressant, Logram est fait pour vous. Inscrivez vous sur le site du projet Logram et rejoignez l'équipe :) .
Le 20 décembre 2008 : Logram/Linux 0.0.1 : Panache 0.6.0bêta, u-Go 0.9.0, Lide/QStudio 0.4 bêta, setup en projet.
 
Hors ligne Sargeros # Posté le 02/12/2008 à 17:15:55
Avatar
Groupe : Membres
Déja donné plusieurs fois ;)

Sinon, a tout hasard, ça serait pas plus rapide (en terme de performances j'entend), de foutre des echo au lieu de tous les backslashs dans les date ?
J'ai pas testé, je me renseigne ;)
Hors ligne Talus # Posté le 02/12/2008 à 17:56:24
タルス
Avatar
Groupe : Membres
Pas forcément des échos, mais oui, à la fois plus lisible, et plus rapide...
 
Hors ligne Nanocom # Posté le 02/12/2008 à 18:06:27
Salut ô !
Avatar
Groupe : Membres
J'avais déjà posté ça :
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

function datefr($temps, $heure = true)
{
	$temps = strtotime($temps);
	$now = time();
	$diff = $now - $temps;

	if ($diff < 60) {
		$re = 'Il y a '.$diff.' s';
	} elseif ($diff < 3600) {
		$re = 'Il y a '.round($diff/60).' min';
	} elseif($diff < 7200) {
		$re = 'Il y a 1h'.round(($diff-3600)/60);
	} elseif (date('d/m/Y', $now) == date('d/m/Y', $temps)) {
		$re = 'Aujourd\'hui à '.date('H:i', $temps);
	} elseif (date('d/m/Y', $now) == date('d/m/Y', $temps + 86400)) { // 86400 secondes s'écoulent en un jour
		$re = 'Hier à '.date('H:i', $temps);
	} else {
		$re = $heure ? 'Le '.date('d/m/Y à H:i', $temps) : 'Le '.date('d/m/Y', $temps);
	}
	
	return $re;
}

?>
Hors ligne steckdenis # Posté le 02/12/2008 à 18:08:52
Ça marche !
Avatar
Groupe : Membres
Bonjour,

Désolé, je n'avais pas vu. Elle est mieux que la mienne :euh: .

Sinon, avec des echo, il faut en faire beaucoup, et formatter nous-même la date en heure ou en minutes. En PHP, ce n'est pas la complexité de la fonction appelée qui compte, mais bien la quantité de tokens à parser ;) .

A plus.
Édité le 02/12/2008 à 18:09:11 par steckdenis

Image utilisateur
Envie d'un projet intéressant, Logram est fait pour vous. Inscrivez vous sur le site du projet Logram et rejoignez l'équipe :) .
Le 20 décembre 2008 : Logram/Linux 0.0.1 : Panache 0.6.0bêta, u-Go 0.9.0, Lide/QStudio 0.4 bêta, setup en projet.
 
Hors ligne coolspot # Posté le 15/12/2008 à 21:35:22
Groupe : Membres
Bonsoir je sais pas si vous en aurez l'utilité mais moi j'en est eu besoin pour créer un système de rappel automatique donc voilà une fonction qui vous dit si le jour entré en paramètre est un jour férié en France ou pas.

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php function is_jour_ferie($jour, $mois, $annee) 
{
  // Initialisation nb jour ferie à 0
  $nbFerie=0;

  // Définition des dates fériées fixes
 if($jour == 01 && $mois == 01) $nbFerie++; // 1er janvier
 if($jour == 01 && $mois == 05) $nbFerie++; // 1er mai
 if($jour == 08 && $mois == 05) $nbFerie++; // 5 mai
 if($jour == 14 && $mois == 07) $nbFerie++; // 14 juillet
 if($jour == 15 && $mois == 08) $nbFerie++; // 15 aout
 if($jour == 01 && $mois == 11) $nbFerie++; // 1 novembre
 if($jour == 11 && $mois == 11) $nbFerie++; // 11 novembre
 if($jour == 25 && $mois == 12) $nbFerie++; // 25 décembre

 // Calcul du jour de pâques
 $date_paques = easter_date($annee);
 $date_paques_lundi = mktime(date("H", $date_paques),
 date("i", $date_paques),
 date("s", $date_paques),
 date("m", $date_paques),
 date("d", $date_paques) + 1,
 date("Y", $date_paques)
 ); 
 $jour_paques = date("d", $date_paques_lundi);
 $mois_paques = date("m", $date_paques_lundi);
 if($jour_paques == $jour && $mois_paques == $mois) $nbFerie++;
 // Pâques

 // Calcul du jour de l ascension (39 jours après Paques)
 $date_ascension = mktime(date("H", $date_paques),
 date("i", $date_paques),
 date("s", $date_paques),
 date("m", $date_paques),
 date("d", $date_paques) + 39,
 dat