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  ...  80  81  82  83  84  85  86  ...  93  94  95  96  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  ...  80  81  82  83  84  85  86  ...  93  94  95  96  Suivante
Hors ligne Dutiona # Posté le 27/04/2008 à 01:45:06
Vis pour être heureux !
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
Bon, je propose 2 lib de "compatibilité" pour émuler file_get_contents sur des url quand ya pas allow_url_fopen et pour emuler http_post_fiels quand ya pas pecl (< php 5 par exemple).

rFile_get_contents :
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
<?php
if(strtolower(ini_get('allow_url_fopen')) == 'off'){
	if(extension_loaded('curl') || (!extension_loaded('curl') && dl('curl'))){
			function rFile_get_contents($url){
				$crlf = "\r\n";
			    $ch = curl_init();
			
			    curl_setopt ($ch, CURLOPT_URL, $url);
			    curl_setopt ($ch, CURLOPT_HEADER, true);
			
			    ob_start();
			
			    curl_exec ($ch);
			    curl_close ($ch);
			    $string = ob_get_contents();
			    ob_end_clean();
		    	// split header and body
				$pos = strpos($string, $crlf . $crlf);
				if($pos === false) return($string);
				$header = substr($string, 0, $pos);
				$body = substr($string, $pos + 2 * strlen($crlf));
				
				// parse headers
				$headers = array();
				$lines = explode($crlf, $header);
				foreach($lines as $line) if(($pos = strpos($line, ':')) !== false) $headers[strtolower(trim(substr($line, 0, $pos)))] = trim(substr($line, $pos+1));
			    
				if(isset($headers['location'])){
					return(rFile_get_content($headers['location']));
				}else{
					return $body;
				}
			}
	}else{
		class HTTPRequest{
			private $_fp;        // HTTP socket
			private $_url;        // full URL
			private $_host;        // HTTP host
			private $_protocol;    // protocol (HTTP/HTTPS)
			private $_uri;        // request URI
			private $_port;        // port
			
			// scan url
			private function _scan_url(){
				$req = $this->_url;
				
				$pos = strpos($req, '://');
				$this->_protocol = strtolower(substr($req, 0, $pos));
				
				$req = substr($req, $pos+3);
				$pos = strpos($req, '/');
				if($pos === false) $pos = strlen($req);
				$host = substr($req, 0, $pos);
				
				if(strpos($host, ':') !== false){
					list($this->_host, $this->_port) = explode(':', $host);
				}else{
					$this->_host = $host;
					$this->_port = ($this->_protocol == 'https') ? 443 : 80;
				}
				
				$this->_uri = substr($req, $pos);
				if($this->_uri == '') $this->_uri = '/';
			}
			
			// constructor
			public function __construct($url){
				$this->_url = $url;
				$this->_scan_url();
			}
			
			// download URL to string
			public function DownloadToArray(){
				$crlf = "\r\n";
				
				// generate request
				$req = 'GET '.$this->_uri.' HTTP/1.0'.$crlf.'Host: '.$this->_host.$crlf.$crlf;
				
				// fetch
				$this->_fp = fsockopen(($this->_protocol == 'https' ? 'ssl://' : '').$this->_host, $this->_port);
				fwrite($this->_fp, $req);
				while(is_resource($this->_fp) && $this->_fp && !feof($this->_fp))
				$response .= fread($this->_fp, 1024);
				fclose($this->_fp);
				
				// split header and body
				$pos = strpos($response, $crlf . $crlf);
				if($pos === false) return($response);
				$header = substr($response, 0, $pos);
				$body = substr($response, $pos + 2 * strlen($crlf));
				
				// parse headers
				$headers = array();
				$lines = explode($crlf, $header);
				foreach($lines as $line) if(($pos = strpos($line, ':')) !== false) $headers[strtolower(trim(substr($line, 0, $pos)))] = trim(substr($line, $pos+1));
				
				// redirection?
				if(isset($headers['location'])){
					$http = new HTTPRequest($headers['location']);
					return($http->DownloadToArray($http));
				}else{
					return(array($body, $headers));
				}
			}
		}
		function rFile_get_contents($url){
			$http = new HTTPRequest($url);
			$res = $http->DownLoadToArray();
			return $res[0];
		}
	}
}else{
	function rFile_get_contents($url){
		return file_get_contents($url);
	}
}
?>


http_post_fields : nécessite curl si ya pas pecl.

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
<?php
if(!function_exists('http_post_fields')){
	function post_data_encode($data, $keyprefix = "", $keypostfix = "") {
		$vars = null;
		foreach($data as $key => $value){
			if(is_array($value))
				$vars .= post_data_encode($value, $keyprefix.$key.$keypostfix.urlencode("["), urlencode("]"));
			else
				$vars .= $keyprefix.$key.$keypostfix."=".urlencode(utf8_encode($value))."&";
		}
		return $vars;
	}
	
	function cookie_data_encode($cookiearr){
		$cookievars = '';
		foreach($cookiearr as $key=>$value) $cookievars .= $key.'='.utf8_encode($value).'; ';
		return $cookievars;
	}
	
	class CurlRequest{
		var $ch;
		/**
		* Init curl session
		*
		* $params = array('url' => '',
		*                    'host' => '',
		*                   'header' => '',
		*                   'method' => '',
		*                   'referer' => '',
		*                   'cookie' => '',
		*                   'post_fields' => '',
		*                    ['login' => '',]
		*                    ['password' => '',]     
		*                   'timeout' => 0
		*                   );
		*/               
		function CurlRequest($params){
			$this->ch = curl_init();
			$user_agent = 'Mozilla/5.0 (Windows; U;
			Windows NT 5.1; ru; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9';
			$header = array(
			"Accept: text/xml,application/xml,application/xhtml+xml,
			text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
			"Accept-Language: ru-ru,ru;q=0.7,en-us;q=0.5,en;q=0.3",
			"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7",
			"Keep-Alive: 300");
			if(isset($params['host']) && $params['host'])		$header[]="Host: ".$host;
			if(isset($params['header']) && is_array($params['header']))	array_merge($header, $params['header']);
			
			@curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1 );
			@curl_setopt($this->ch, CURLOPT_VERBOSE, 1 );
			@curl_setopt($this->ch, CURLOPT_HEADER, 1 );
			
			if($params['method'] == "HEAD") @curl_setopt($this->ch, CURLOPT_NOBODY, 1);
			@curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 1);
			@curl_setopt($this->ch, CURLOPT_HTTPHEADER, $header);
			if ($params['referer']) @curl_setopt($this->ch, CURLOPT_REFERER, $params['referer']);
			@curl_setopt($this->ch, CURLOPT_USERAGENT, $user_agent);
			if($params['cookie']) @curl_setopt($this->ch, CURLOPT_COOKIE, $params['cookie']);
			
			if($params['method'] == "POST" ){
				curl_setopt($this->ch, CURLOPT_POST, true );
				curl_setopt($this->ch, CURLOPT_POSTFIELDS, $params['post_fields']);
			}
			@curl_setopt($this->ch, CURLOPT_URL, $params['url']);
			@curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0);
			@curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0);
			if(isset($params['login']) & isset($params['password']))
			@curl_setopt($this->ch, CURLOPT_USERPWD, $params['login'].':'.$params['password']);
			@curl_setopt($this->ch, CURLOPT_TIMEOUT, $params['timeout']);
		}
		
		/**
		* Make curl request
		*
		* @return array  'header','body','curl_error','http_code','last_url'
		*/
		function exec(){
			$response = curl_exec($this->ch);
			$error = curl_error($this->ch);
			$result = array('header' => '',
							'body' => '',
							'curl_error' => '',
							'http_code' => '',
							'last_url' => ''
							);
			if($error != ""){
				$result['curl_error'] = $error;
				return $result;
			}
			
			$header_size = curl_getinfo($this->ch, CURLINFO_HEADER_SIZE);
			$result['header'] = substr($response, 0, $header_size);
			$result['body'] = substr( $response, $header_size);
			$result['http_code'] = curl_getinfo($this->ch, CURLINFO_HTTP_CODE);
			$result['last_url'] = curl_getinfo($this->ch, CURLINFO_EFFECTIVE_URL);
			return $result;
		}
	}
	
	function http_post_fields($url, $postarray, $options = null){
		$postvar = substr(post_data_encode($postvar), 0, -1);
		$params = array('url' => $url,
						'host' => '',
						'header' => array(),
						'method' => 'GET', //POST HEAD
						'referer' => '',
						'cookie' => '',
						'post_fields' => $postvar,
						'login' => '',
						'password' => '',
						'timeout' => 0
		                   );
		if(is_array($options)){
			foreach($options as $option => $val){
				switch($options){
					case 'host':
						$params['host'] = $val;
						break;
					case 'header':
						foreach($val as $hn => $hv){
							$param['header'][] = $hn.': '.$hv;
						}
						break;
					case 'method':
						$params['method'] = $val;
						break;
					case 'referer':
						$params['referer'] = $val;
						break;
					case 'cookie':
						$params['cookie'] = cookie_data_encode($val);
						break;
					case 'login':
						$param['login'] = $val;
						break;
					case 'password':
						$params['password'] = $val;
						break;
					case 'timeout':
						$params['timeout'] = $val;
				}
			}
		}
		$conn = new CurlRequest($params);
		$result = $conn->exec();
		if($result['curl_error']) trigger_error($result['curl_error'], E_USER_WARNING);
		if($result['http_code']!='200') trigger_error("HTTP Code = ".$result['http_code'], E_USER_WARNING);
		if(!$result['body']) trigger_error("Pas de corps du document", E_USER_WARNING);
		return array($result['body'], $result['header']);
	}
}
?>



J'ai reconstitué ces lib grâce à quelques bouts de code des commentaires utilisateurs de la doc et surtout grâce à la doc elle-même.
Maintenant, faut tester pour trouver tous les bug (certains m'ont sans doute échapés).


Bisous, Nyu

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 RekinMalad # Posté le 27/04/2008 à 10:59:57
Peace and love !
Avatar
Groupe : Membres
Citation : Asibasth
J'ai déjà proposé une fonction fonctionnelle (ahah) au sujet des magic quotes sur ce topic...


Quelle page s'il te plait ? :D

Wazaaaaaaa ! Peace & love !

Utilisez les balises de code nondidiou ! Et des titres plus explicites, ca serait pas mal aussi ouais !

Dessine Moi Une Marmotte: |||||||||||||||||||| % ±5%
 
Hors ligne Asibasth # Posté le 27/04/2008 à 11:56:41
Mangeur de Lapins Crus
Avatar
Modérateurs
À la page numéro "sers-toi d'un array map" :D
 
Hors ligne M3PHISTOS # Posté le 29/04/2008 à 15:24:17
Error 404: brain not found
Avatar
Groupe : Membres
Je viens rajouter ma pierre à l'édifice.

Le morceau de code permet d'obtenir, a partir d'une table de base de donnée de cette forme:

nomvaleur
alpha 1000
beta 2000
gamma 3000
delta 4000
... ...


un array (tableau associatif) comme ceci:

variablevaleur
$tab['alpha'] 1000
$tab['beta'] 2000
$tab['gamma'] 3000
$tab['delta] 4000
... ...


C'est à dire que la valeur de la première colonne est utilisée comme nom de variable pour la 2eme colonne.

Voici le code:

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?php
 $result = mysql_query('SELECT * FROM table ORDER BY valeur');
 
 $tab=Array();
 while($ligne = mysql_fetch_assoc($result)){
  $tab[$ligne['nom']]=$ligne['valeur'];
 }

 print_r($tab);
?>


Je tiens a préciser que j'ai cherché ce fonctionnement pendant des heures et que c'est Moua&Moua qui en a trouvé la solution dans ce topic.

M3PHISTOS, Virtuellement vôtre...
 
Hors ligne shine-neko # Posté le 29/04/2008 à 15:38:11
Saite ita no wa My Rosy Heart
Avatar
Groupe : Membres
M3PHISTOS => C'est pas une fonction c'est juste une histoire de logique ^^

La v3 de Shine-Shiina est sortit
Qui n'a jamais rêver d'apprendre a dessiner , Cuisiné japonnais dévorer de nouveaux manga fait par des copains et d'apprendre le japonais ?
=> La réponse se trouve ici
Image utilisateur

 
Hors ligne hztm # Posté le 29/04/2008 à 15:47:20
Avatar
Groupe : Membres
Ouais, c'est le B-A-BA ! Sinon j'en ai un bien si on fait echo 3+5 ça va afficher 8 !

Vous en avez marre de ces erreurs de script ? On va vous en débarrasser ! >_< ACSJ - ForumF1 remplissezmaboite@voila.fr
Image utilisateur
 
Hors ligne RekinMalad # Posté le 29/04/2008 à 19:23:16
Peace and love !
Avatar
Groupe : Membres
Citation : Asibasth
À la page numéro "sers-toi d'un array map" :D


Tu m'aides énormément.

Wazaaaaaaa ! Peace & love !

Utilisez les balises de code nondidiou ! Et des titres plus explicites, ca serait pas mal aussi ouais !

Dessine Moi Une Marmotte: |||||||||||||||||||| % ±5%
 
Hors ligne Artefact2 # Posté le 29/04/2008 à 19:38:17
C'est toi le bouc !
Avatar
Groupe : Membres
Citation : RekinMalad
Citation : Asibasth
À la page numéro "sers-toi d'un array map" :D


Tu m'aides énormément.


(Lien)

:) :-°

Image utilisateur
Mes tutoriels : Bien utiliser les fonctions de hachage / La 2D en C# / Utilisez les bases de données dans vos programmes C#

"Imaginez un monde ou chacun est libre de s'exprimer à tout sujet..."
Venez tous sur Freenet 0.7 ! Comment ? Pourquoi ?
 
Hors ligne Thulium # Posté le 29/04/2008 à 20:28:53
Avatar
Groupe : Membres
Salut, je vous donne un script qui créé un sitemap automatiquement :
(il faut placer la page à la racine de votre site, vous pouvez retrouver le script dans les commentaires du tuto sur les sitemaps que je vous conseil de lire.)
Code : PHP - sitemap.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
<?php
/***************
générateur de sitemap créé le 28-29/04/2008 par Thulium (et vidji)
cette page le créé automatiquement en prenant toutes les pages du site.
J'aurai pu faire ce script avec la fonction glob, mais elle n'est souvent pas acceptée chez les hébergeurs gratuits comme free (chez qui je suis) et comme j'ai l'intention de faire un tuto dessus je prefère que ce soit au maximum compatible...
****************
Enregistrez le script dans sitemap.php et n'oubliez pas de dire d'où il provient si tu le donne, merci.
***************/
header("Content-type: text/xml");// on dit que c'est un document XML (puisque l'extension est php)
function extensions($page)// fonction pour n'enregistrer dans le sitemap seulement les fichiers HTML, HTM, PHP (tu peux changer)
	{
	 return preg_match("#^.+.(php|html?)$#", $page);
	}
function dossier($dir)//retourne le bon nom d'un dossier pour le script
	{
	 if($dir == './' OR $dir == '../' OR $dir == '/' OR $dir == '..' OR $dir == '.')//si ce n'est pas le dossier racine ou dossier parent
		 return "";
	 else
		 return $dir.'/';
	}
function url($site, $dir, $page, $lastmod, $changefreq = "weekly", $priority = "0.5")//fonction qui donne le texte du sitemapentre <url> et </url> d'une page
	{
	 if(!preg_match("#^nomdedossier#", $dir))// pour mettre, par exemple, 0.0 de priorité d'un dossier, ici tout sauf ce dossier
		 echo "
		 <url>
			 <loc>".$site.dossier($dir).$page."</loc>
			 <lastmod>".date('Y-m-d', $lastmod)."</lastmod>
			 <changefreq>".$changefreq."</changefreq>
			 <priority>".$priority."</priority>
		 </url>";
	 else // et ici ce dossier pour le 0.0
		 echo "
		 <url>
			 <loc>".$site.dossier($dir).$page."</loc>
			 <lastmod>".date('Y-m-d', $lastmod)."</lastmod>
			 <changefreq>".$changefreq."</changefreq>
			 <priority>0.0</priority>
		 </url>";
	}
function sitemap($site, $dir)// fonction coeur
	{
	 $repertoire = opendir($dir);// on ouvre le répértoire.
	 while($page = readdir($repertoire))
		{
		 if($page != './' AND $page != '../' AND $page != '..' AND $page != '.' AND $page != '/')
			{
			 $infos = stat(dossier($dir).$page);// $infos[9] est identique à filemtime
			 if(filetype(dossier($dir).$page) == 'dir')// filetype => type de fichier ^^
				{
				 sitemap($site, dossier($dir).$page);// recursivité : si c'est un dossier, on fait les <url></url> du dossier
				}
			 elseif(filetype(dossier($dir).$page) == 'file')// si c'est un fichier
				{
				 if(extensions($page))// si c'est $page a une extension acceptée :
					{
					 switch($page)//ici, reglez les importances de pages spéciales et par défaut.
						{
						 case 'index.php': // page plus importante
							 $changefreq = 'weekly';
							 $priority = '0.7';
							 break;
						 case 'newsletter.php':
							 $changefreq = 'monthly';
							 $priority = '0.8';
							 break;
						 case 'htaccess': // on s en fiche donc priorité 0.0
							 $changefreq = 'monthly';
							 $priority = '0.0';
							 break;
						 case 'forum.php':
							 $changefreq = 'always'; // pour le forum on met always
							 $priority = '0.9';
							 break;
						 case 'menu.php': // page incluse donc 0.0
							 $changefreq = 'monthly';
							 $priority = '0.0';
							 break;
						 default: // réglages par défaut
							 $changefreq = 'weekly';
							 $priority = '0.5';
						}
					 url($site, $dir, $page, $infos[9], $changefreq, $priority);// on ecrit le paragraphe sur elle.
					}
				}
			}
		}
	 closedir($repertoire);// on ferme le repertoire courant.
	}
/***************
Le début du point de vu éxécution.
***************/
echo "<?xml version='1.0' encoding='UTF-8' ?>
<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\">";// on ecrit les premières lignes du sitemap

$site = "http://www.example.com/";// on indique l'adresse du site (n'oubliez pas le / à la fin)
$dir = "./";// on indique le dossier de base d'indexation : ici la racine ; n'oubliez pas le .
/***************
on appelle une fois la fonction sitemap et c'est bon!
***************/
sitemap($site, $dir);

echo "
</urlset>";// la fin du sitemap
clearstatcache();// on vide le cache de stat() ==> <lien url="http://php.net/stat">http://php.net/stat</lien> - <lien url="http://php.net/clearstatcache">http://php.net/clearstatcache</lien>
/***************
Il me semble l'avoir assez commenté pour qu'il soit compréhensible,
L'exemple sur mon site : <lien url="http://www.lepenspinning.free.fr/sitemap.php">http://www.lepenspinning.free.fr/sitemap.php</lien>
Une idée : vous pouvez faire un système de cache pour eviter de recharger tout le sitemap, par exemple un fichier sitemap.xml et un autre faire_sitemap.php que vous appellez tous les jours avec un cron.
****************
Ce script ne gère pas les page du genre
-forum.php?topic=259&page=6
-forum-259-6.html
-livredor.php?p=12
-...
Je vous conseille de faire deux page sitemap_forum.php et sitemap_livredor.php que vous incluez à la ligne 101
***************/
?>
Édité le 30/04/2008 à 13:58:09 par Thulium


"Keyboard not found, press F1 to resume."
enfant@fils-deskop:~$ sudo apt-get autoremove vie-sociale
parent@pere-deskop:~$ C'est bien mon fils, tu es devenu un Geek !


Image utilisateurImage utilisateur
 
Hors ligne Babie # Posté le 03/05/2008 à 19:02:59
Avatar
Groupe : Membres
Fonction rmdir() récursive qui supprime un dossier même si celui-ci n'est pas vide.

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function rmdir_r($dir){
/* Fonction rmdir() récursive, programmée par Babie */

	if(!is_dir($dir))	return false; //Si le dossier demandé n'existe pas ou n'est pas un dossier, on renvoie FALSE
	$scan = scandir($dir); //On met la liste des éléments (fichiers/dossier) du répertoire $dir dans le array $scan
	
	$i = 2; //On commence la variable $i à 2 pour éviter d'avoir les éléments "." et ".."
		while($i < count($scan)){ //Tant que $i est plus petit que le nombre d'éléments du array $scan :
	
		if(is_dir($dir."/".$scan[$i])){ // Si l'élément est un dossier,
			rmdir_r($dir."/".$scan[$i]);                           // On recommence la fonction pour lui
		}else{ // Si l'élément n'est pas un dossier, c'est un fichier,
			unlink($dir."/".$scan[$i]);                                 // Donc on le supprime
		}
	$i++; //On incrémente la variable $i afin de ne pas avoir une boucle infinie
}

rmdir($dir); //Maintenant qu'on sait que le dossier $dir est vide, on peut le supprimer
}
?>

Ma définition de l'art: "L'art est une multitude de possibilités."
J'adore le BruteForce XD
 
Hors ligne Dev.bin # Posté le 03/05/2008 à 19:04:39
Groupe : Membres
Génial ta fonction :)
Hors ligne Dentuk # Posté le 03/05/2008 à 20:03:42
Yamo...
Avatar
Groupe : Membres
Citation : Babie
Fonction rmdir() récursive qui supprime un dossier même si celui-ci n'est pas vide.
Il y a déjà une fonction équivalente dans les commentaires de la doc, pourquoi réinventer la roue ?

Signature en cours de révision.
 
Hors ligne Thulium # Posté le 03/05/2008 à 21:29:41
Avatar
Groupe : Membres
...parce que tout le monde ne lit pas/n'a pas le temps de lire tous les commentaires de la doc...


"Keyboard not found, press F1 to resume."
enfant@fils-deskop:~$ sudo apt-get autoremove vie-sociale
parent@pere-deskop:~$ C'est bien mon fils, tu es devenu un Geek !


Image utilisateurImage utilisateur
 
Hors ligne shine-neko # Posté le 03/05/2008 à 21:31:30
Saite ita no wa My Rosy Heart
Avatar
Groupe : Membres
Citation : Thulium
...parce que tout le monde ne lit pas/n'a pas le temps de lire tous les commentaires de la doc...


C'est pour ça qu'il flood le forum :-°

La v3 de Shine-Shiina est sortit
Qui n'a jamais rêver d'apprendre a dessiner , Cuisiné japonnais dévorer de nouveaux manga fait par des copains et d'apprendre le japonais ?
=> La réponse se trouve ici
Image utilisateur

 
Hors ligne Skyisblue # Posté le 03/05/2008 à 22:29:57
Don't forget : The Sky Is Blue
Avatar
Groupe : Membres
Citation : shine-neko
Citation : Thulium
...parce que tout le monde ne lit pas/n'a pas le temps de lire tous les commentaires de la doc...


C'est pour ça qu'il flood le forum :-°

C'est pour ca qu'il y a un forum ^^
!!!

Ma config


  • Processeur: Intel Core2Duo E6400
  • Carte Graphique: nVidia 8800 GT
  • Carte mère: MSI P965 Neo-F
  • Mémoire Ram: 2G DDR2 Corsair
  • Ecran: LG 22" Wide
 
Hors ligne Dentuk # Posté le 03/05/2008 à 23:26:30
Yamo...
Avatar
Groupe : Membres
Citation : Thulium
...parce que tout le monde ne lit pas/n'a pas le temps de lire tous les commentaires de la doc...
Pure mauvaise foi...
Tu veux supprimer un dossier même plein connaissant rmdir, tu te dis pas que quelqu'un a déjà pu avoir ce problème ?
Par réflexe je me dis que oui et donc je vais voir les commentaires de la doc'... Suffit d'en lire un hein, c'est le premier qu'on voit actuellement.

Signature en cours de révision.
 
Hors ligne JeromeJ # Posté le 03/05/2008 à 23:44:18
Avatar
Groupe : Membres
A quoi sert ce topic ? -_- pas juste à innover et a trouver de meilleurs fonctions.

Il permet tout d'abord de récolter des astuces, des fonctions utilisateurs etc etc et puis à en faire une liste généralisées. Ce qui est je trouve bine plus pratique que de devoir chercher à gauche et à droite. Non ?








Secret (cliquez pour afficher)
Ce que je maitrise actuellement: XHTML, CSS, PHP, Action Script 2 et 3, JavaScript, SQL, Python, et un peu de C, C++ et d'erl
 
Hors ligne Dentuk # Posté le 04/05/2008 à 00:02:22
Yamo...
Avatar
Groupe : Membres
Citation : JeromeJ
A quoi sert ce topic ? -_- pas juste à innover et a trouver de meilleurs fonctions.

Il permet tout d'abord de récolter des astuces, des fonctions utilisateurs etc etc et puis à en faire une liste généralisées. Ce qui est je trouve bine plus pratique que de devoir chercher à gauche et à droite. Non ?
A gauche et à droite... La doc c'est pas n'importe quoi non plus hein c'est quand même la référence pour le PHP. Non ?
Certes une liste c'est pratique mais pour ma part pour un cas aussi spécifique je pense d'abord à aller voir la doc plutôt qu'un listing où je ne suis pas sûr de trouver ce que je cherche. (et puis si on répertorie tous les cas spécifiques, il va être bien long et pas pratique à lire votre listing)
Après, chacun ses goûts...

Signature en cours de révision.
 
Hors ligne JeromeJ # Posté le 04/05/2008 à 00:10:58
Avatar
Groupe : Membres
Bah y a les pures codeurs ^^ jme réfère quotidiennement à la doc par exemple :p (presque) mais je lis pas les commentaires, car là non plus je suis pas sur de trouver ce que je cherche, et, parfois quand on peut ne pas chercher, c'est une perte de temps de chercher (Oo...)

Puis certains codeurs eux ne se servent jamais de la doc (ou quasi pas) donc ça peut leur être très utile. Maintenant je pense que le juste milieu est la meilleure chose.








Secret (cliquez pour afficher)
Ce que je maitrise actuellement: XHTML, CSS, PHP, Action Script 2 et 3, JavaScript, SQL, Python, et un peu de C, C++ et d'erl
 
Hors ligne TimeSplitters # Posté le 04/05/2008 à 12:06:32
Avatar
Groupe : Membres
Si la doc a fait une fonction rmdir() qui ne permet pas de supprimer un dossier s'il n'est pas vide, c'est qu'il y a une raison. En général, les développeurs de PHP et donc de la doc établissent la logique la plus pure qui soit pour le langage et les besoins utilisateurs. Ca veut dire qu'il n'est pas nécessaire de pouvoir supprimer un dossier non vide.

Des développeurs par ci et des graphistes par là, sans oublier les recruteurs (porteurs de projets) ! | TimeSplitters Games :)
 
Hors ligne Thomas10101 # Posté le 08/05/2008 à 19:01:52
Avatar
Groupe : Membres
Exact mais moi par exemple, j'ai déjà eu besoins de supprimer un dossier qui contenait plein de fichiers à l'intérieur dans le cas d'un ftp en ligne.
 
Hors ligne inkz # Posté le 08/05/2008 à 19:23:03
Groupe : Membres
Fonction qui permet de compter les caractères similaires dans une chaîne.

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
function compteur_similaire($chaine,$search)
   {
      $chaine = str_split($chaine);
      $num = count($chaine);
      $y = 0;
      $trouvee = 0;
      
	  while($num > $y)
         {
            if($search == $chaine[$y])
	           {
                  $resultat = ++$trouvee;
	           }   	 
	      $y++;
         }
	  return $resultat;
   }

echo compteur_similaire('php','p');
Hors ligne anonyme # Posté le 08/05/2008 à 19:31:09
Groupe :
Tu ne crois pas qu'il y a moyen de faire plus simple, plus court, plus mieux ?
Et substr_count() existe, autant s'en servir.
Hors ligne Okajima # Posté le 08/05/2008 à 19:50:26
Vive One piece et le sdz !
Groupe : Membres
Hello !!

Aujourd'hui je vais pour la première fois vous poster 2 fonctions.
La seconde est encore à l'état d'amélioration.
$rep_smileys correspond au répertoire ou les smileys sont .

Voici ma première fonction:

BBcode


But: traduire des balises en éléments Html
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
<?php
function bbcode($contenu)
	{
		$contenu = str_replace(":D","<img src='".$rep_smileys."content.gif' alt='' />",$contenu);
		$contenu = str_replace("^^","<img src='".$rep_smileys."lol.gif' alt='' />",$contenu);
		$contenu = str_replace(":)","<img src='".$rep_smileys."sourire.gif' alt='' />",$contenu);
		$contenu = str_replace(":clindoeil:","<img src='".$rep_smileys."clindoeil.gif' alt='' />",$contenu);
		$contenu = str_replace(":fume:","<img src='".$rep_smileys."fume.gif' alt='' />",$contenu);
		$contenu = str_replace(":gagne:","<img src='".$rep_smileys."gagne.gif' alt='' />",$contenu);
		$contenu = str_replace(":houra:","<img src='".$rep_smileys."houra.gif' />",$contenu);
		$contenu = str_replace(":anniversaire:","<img src='".$rep_smileys."joyeuxanniversaire.gif' alt='' />",$contenu);
		$contenu = str_replace(":p","<img src='".$rep_smileys."langue.gif' alt='' />",$contenu);
		$contenu = str_replace(":vomi:","<img src='".$rep_smileys."vomi.gif' alt='' />",$contenu);
		$contenu = str_replace(":xd:","<img src='".$rep_smileys."xd.gif' alt='' />",$contenu);
		$contenu = str_replace(":=_=:","<img src='".$rep_smileys."=_=.gif' alt='' />",$contenu);
		$contenu = str_replace(":chao:","<img src='".$rep_smileys."chao.gif' alt='' />",$contenu);
		$contenu = str_replace(":buhh:","<img src='".$rep_smileys."buhh.gif' alt='' />",$contenu);
		$contenu = str_replace(":ouin:","<img src='".$rep_smileys."ouin.gif' alt='' />",$contenu);
		$contenu = str_replace(":ouin2:","<img src='".$rep_smileys."ouin2.gif' alt='' />",$contenu);
		$contenu = str_replace