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  ...  87  88  89  90  91  92  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  ...  87  88  89  90  91  92  Suivante
Hors ligne Psykose # Posté le 30/06/2008 à 01:40:20
Carambaaa(r) !
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
Si tu vas voir dans les fonctions concernant les arrays elles renvoient pratiquement pour la plupart un Booléen ;)

Mes tutos préférés :
Apprenez le Javascript - Dominos animables (blender) - Apprenez Maya
Mes tutos :
Créer une tête Cartoon avec Blender

Psykose's JukeboX : I - II - III - IV - V - Now extended ! - VI - VII - VIII
 
Hors ligne Thulium # Posté le 30/06/2008 à 01:43:44
www.lepenspinning.free.fr
Avatar
Groupe : Membres
justement, <?php $NuString = shuffle($NuString); $NuSentence = implode($NuString); ?> , ça risque pas de marcher, puisque $NuString est un booléen, au moment de l'implode.

image du jour : le siteduzero est pas dans le dico ? :lol: Image utilisateur
signature :
Dark Windu Good Linux | Apprenez le Penspinning !! Et postez VOS vidéos !!!
:magicien: Le PHP fait de la MAGIE !!!! :magicien:
RPG Poudlard Online en consctruction !!!
Viendrez nombreux hein ?
me : Image utilisateur | brother : Image utilisateur
 
Hors ligne Psykose # Posté le 30/06/2008 à 02:03:21
Carambaaa(r) !
Avatar
Groupe : Membres
Ooookééé ^^

Mes tutos préférés :
Apprenez le Javascript - Dominos animables (blender) - Apprenez Maya
Mes tutos :
Créer une tête Cartoon avec Blender

Psykose's JukeboX : I - II - III - IV - V - Now extended ! - VI - VII - VIII
 
Hors ligne Savageman # Posté le 30/06/2008 à 09:19:46
Insa : If inside
Avatar
Groupe : Membres
Tant qu'à garder les majuscules là où yen a besoin !

Code : PHP
1
2
3
4
5
6
7
8
<?php
function SentenceShuffler($string)
{
	$words = explode(' ', $string);
	$words[0] = strtolower($words[0]);
	shuffle($words);
	return ucfirst(implode(' ', $words));
}


La ponctuation c'est un poil plus compliqué ! :-°
Édité le 30/06/2008 à 09:20:09 par Savageman

Rendez votre code plus compréhensible : utilisez les constantes !
 
Hors ligne Psykose # Posté le 30/06/2008 à 14:58:07
Carambaaa(r) !
Avatar
Groupe : Membres
La ponctuation n'est pas super importante étant donné que la phrase retournée ne voudras pas dire grand chose ;)

Mes tutos préférés :
Apprenez le Javascript - Dominos animables (blender) - Apprenez Maya
Mes tutos :
Créer une tête Cartoon avec Blender

Psykose's JukeboX : I - II - III - IV - V - Now extended ! - VI - VII - VIII
 
Hors ligne RekinMalad # Posté le 08/07/2008 à 12:18:56
Peace and love !
Avatar
Groupe : Membres
Fonction de "sécurité" lorsque register_globals est activé (a placer en début de chaque page:
Code : PHP
1
2
3
4
5
6
<?php
foreach($_POST as $a => $b) {
   unset(${$a});
}
// idem avec $_GET
?>
Édité le 08/07/2008 à 12:22:16 par RekinMalad

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 bluestorm # Posté le 08/07/2008 à 12:20:38
dont ask to ask
Avatar
Groupe : Membres
Hors ligne RekinMalad # Posté le 08/07/2008 à 12:21:54
Peace and love !
Avatar
Groupe : Membres
Cela dépend de ton hébergeur ...

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 Savageman # Posté le 08/07/2008 à 12:27:02
Insa : If inside
Avatar
Groupe : Membres
Surtout que si ton script est bien fait, ça ne change rien que ces variables soient définies ou non, vu que tu t'en sers pas, ou bien bien que tu les écrases avant de t'en servir...

Rendez votre code plus compréhensible : utilisez les constantes !
 
Hors ligne bluestorm # Posté le 08/07/2008 à 12:29:20
dont ask to ask
Avatar
Groupe : Membres
Savageman > c'est quand même toujours mieux de pas avoir de variables louches qui trainent. Dans le cas où un intrus arrivait à ajouter du code PHP au milieu de ton script par exemple, il vaut mieux que les mots de passe ne trainent pas dans une variable.

Ceci dit dans ce cas là, effectivement le bénéfice est plutôt faible.
 
Hors ligne Skyisblue # Posté le 08/07/2008 à 22:19:02
Don't forget : The Sky Is Blue
Avatar
Groupe : Membres
Salut

Un code pour afficher les derniers messages d'un forum SMF

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
/* Dernier messages du forum */
/* //Uniquement compatible// */
/* ///avec les forum' SMF/// */
/* /www.simplemachines.org / */
/* ////////Skyisblue//////// */
/* ///////////////////////// */
/* Connection SQL préalable obligatoire */
/* ///////////////////////// */
$chemin_vers_forum = "forum/"; //Le lien vers le forum
$dernier_message = mysql_query("SELECT * FROM smf_messages ORDER BY `ID_MSG` DESC LIMIT 0, 5")or die(mysql_error());
/* Requête pour afficher les 5 derniers messages du forum */
while($dern = mysql_fetch_array($dernier_message))
{
	$nom_topic = $dern['subject'];
	$posteur = $dern['posterName'];
	$num_topic = $dern['ID_MSG'];
	$lien_topic = $chemin_vers_forum."index.php?topic=".$num_topic;
	echo "<a href='".$lien_topic."' title='Posté par :".$posteur."'>".$nom_topic."</a><br />";
}
?>


A+

Image utilisateur
Best Regards, and don't forget, the Sky is Blue
Image utilisateur
Image utilisateur
 
Hors ligne linkboss # Posté le 10/07/2008 à 19:42:17
être ou ne pas être zer0
Avatar
Groupe : Membres
Salut,

Voici ma petite contribution, 3 fonctions permettant de lister fichiers et dossiers séparément :

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
<?php

//retourne un array
function lister_dossiers($dossier)
{
	if(func_num_args() >= 2)
		$courant=func_get_arg(1);
	else
		$courant=dossier_courant();
	
	$nb_fichiers=count($dossier);
	$dossier_folders=array();
	$walk=0;
	for($i=0;$i < $nb_fichiers;$i++)
	{
		if(is_dir($courant.$dossier[$i]))
		{
			$dossier_folders[$walk]=$dossier[$i];
			$walk++;
		}
	}
	natsort($dossier_folders);
	return $dossier_folders;
}

//retourne un array
function lister_fichiers($dossier)
{
	if(func_num_args() >= 2)
		$courant=func_get_arg(1);
	else
		$courant=getcwd();
	
	$nb_fichiers=count($dossier);
	$dossier_files=array();
	$walk=0;
	for($i=0;$i < $nb_fichiers;$i++)
	{
		if(!is_dir($courant.$dossier[$i]))
		{
			$dossier_files[$walk]=$dossier[$i];
			$walk++;
		}
	}

	natsort($dossier_files);
	return $dossier_files;
}

//Retourne un array bi-dimensionnel
function lire_dossier($chemin)
{
	$dossier=scandir($chemin);
	array_shift($dossier);
	array_shift($dossier);
	$liste_dossiers=lister_dossiers($dossier,$chemin);
	$liste_fichiers=lister_fichiers($dossier,$chemin);
	$folder=array('dossiers' => $liste_dossiers, 'fichiers' => $liste_fichiers, 'chemin' => $chemin);
	return $folder;
}
?>


Quelques exemples d'utilisation :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?php

//Lire un dossier :
$dossier=lire_dossier('un_dossier');

//Ne prendre que les fichiers d'un dossier
$dossier=scandir('un_dossier');
$liste_fichiers=lister_fichiers($dossier);

//Ne prendre que les sous-dossiers
$dossier=scandir('un_dossier');
$liste_fichiers=lister_dossiers($dossier);

?>

Si les crapauds avaient des ailes, ils ne s'éclateraient pas les couilles en sautant sur les rochers
Solid Shake, Meta Gueule Solid, Episode 7 sur Le Démon Du Rire


Image utilisateur
 
Hors ligne selen # Posté le 12/07/2008 à 13:23:38
Avatar
Groupe : Membres

Fonction pour faire des thumbs carrés à partir des images d'un répertoire



A préciser qu'il n'y a pas de distorsion de l'image obtenue.
Le fichier doit être placé dans le dossier où se trouvent les images et le mot DOSSIER doit être remplacé par le nom de votre dossier.

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
<?php

	define('DOSSIER', './');

	function createThumb($source,$dest) {

		$thumb_size = 96;

		$size = getimagesize($source);
		$width = $size[0];
		$height = $size[1];

		if($width > $height) {
			$x = ceil(($width - $height) / 2 );
		$width = $height;
		} elseif($height > $width) {
			$y = ceil(($height - $width) / 2);
			$height = $width;
		}

		$new_im = ImageCreatetruecolor($thumb_size,$thumb_size);
		$im = imagecreatefromjpeg($source);
		imagecopyresampled($new_im,$im,0,0,$x,$y,$thumb_size,$thumb_size,$width,$height);
		imagejpeg($new_im,$dest,100);

	}


	$fichiers = scandir(DOSSIER);

	foreach($fichiers AS $value) {
		if(pathinfo($value, PATHINFO_EXTENSION) == 'jpg') createThumb(DOSSIER . $value, DOSSIER . 'thumb_'.$value);
	}
 
?>


Merci à Find Motive et à Eurowindows qui a rendu le fichier exploitable à la volée.


Image utilisateur
 
Hors ligne robocop # Posté le 12/07/2008 à 13:59:00
Avatar
Groupe : Membres
Ca sert à quoi un thumb :D ?

Image utilisateur
 
Hors ligne jmsche # Posté le 12/07/2008 à 14:06:20
Avatar
Groupe : Membres
Hors ligne robocop # Posté le 12/07/2008 à 14:24:31
Avatar
Groupe : Membres
A oui, autant pour moi.
J'ai pas regardé le code source, et je pensais que ça générait le fichier tumb de windows qu'il y a dans tous les dossiers contenant des documents !

Image utilisateur
 
Hors ligne lemirandais # Posté le 12/07/2008 à 20:50:46
Ubuntu, Debian, Tiger USER
Avatar
Groupe : Membres
Sauvegarde totale de la base de donnée:
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
<?php

$db_server="localhost";
$db_username="user";
$db_password="pass";
$db_name="basededonnee";

function sauvegarde_bdd($host,$user,$pass,$base) {
    mysql_connect($host, $user, $pass);
    mysql_select_db($base);

    $tables = mysql_list_tables($base);

    while ($donnees = mysql_fetch_array($tables)) { 
      $table = $donnees[0]; 
      $res = mysql_query("SHOW CREATE TABLE ".$table);
      if($res){
        $insertions = "";
        $tableau = mysql_fetch_array($res);
        $tableau[1] .= ";";
        $dumpsql[] = str_replace("\n", "", $tableau[1]);
        $req_table = mysql_query("SELECT * FROM ".$table);
        $nbr_champs = mysql_num_fields($req_table);
        while($ligne = mysql_fetch_array($req_table)){
          $insertions .= "INSERT INTO ".$table." VALUES(";
            for ($i=0; $i<=$nbr_champs-1; $i++){
              $insertions .= "'".mysql_real_escape_string($ligne[$i])."', ";
            }
            $insertions = substr($insertions, 0, -2);
            $insertions .= ");\n";
        }
        if ($insertions != ""){
          $dumpsql[] = $insertions;
        }
      }
    }
    return implode("\r", $dumpsql);
}
file_put_contents("$db_name-$date-$db_charset.sql",sauvegarde_bdd($db_server,$db_username,$db_password,$db_name));
?>
Édité le 12/07/2008 à 21:07:09 par lemirandais
 
Hors ligne fppaty # Posté le 17/07/2008 à 15:05:06
Avatar
Groupe : Membres
Convertit un nombre en base x en un nombre en base n (les lettres ne sont prises en compte seulement pour l'hexadécimal) :

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
<?php
function convert_base ($nb, $base_depart, $base_arrive) {
$var = array('i' => 0, 'j' => 0, 'k' => 0, 'l' => 0, 'b10' => 0, 'bf' => 0);
$array = array();
$d = array();
$r = array();
$lettres = array('A', 'B', 'C', 'D', 'E', 'F');
$nombres = array('10', '11', '12', '13', '14', '15');
while ($var['i'] < strlen($nb)) {
$num = $nb[$var['i']];
if($base_depart == '16') {
$num = str_replace($lettres, $nombres, $num);
}
$array[$var['i']] = $num*(pow($base_depart, (strlen($nb)-($var['i']+1))));
$var['i']++;
}
while ($var['j'] < count($array)) {
$var['b10'] += $array[$var['j']];
$var['j']++;
}

$r[0] = $var['b10'] % $base_arrive;
$d[0] = ($var['b10'] - $r[0])/$base_arrive;
while ($d[$var['k']] >= $base_arrive) {
$var['k']++;
$r[$var['k']] = $d[($var['k']-1)] % $base_arrive;
$d[$var['k']] = ($d[($var['k']-1)] - $r[$var['k']])/$base_arrive;
}
if($base_arrive == '16') {
$d[(count($d)-1)] = str_replace($nombres, $lettres, $d[(count($d)-1)]);
}
$var['bf'] = $d[(count($d)-1)];
$var['l'] = count($r);
while($var['l'] >= 0) {
if($base_arrive == '16') {
$r[$var['l']] = str_replace($nombres, $lettres, $r[$var['l']]);
}
$var['bf'] .= $r[$var['l']];
$var['l']--;
}
return $var['bf'];
}
?>


Exemple d'utilisation :
Code : PHP
1
2
3
<?php
echo convert_base('111010', '2', '16');
?>

Ce qui convertira le nombre 111010 de base 2 en base 16. Ça donnera 3A.
Les lettres ne sont prises en compte seulement pour l'hexadécimal, donc pour une base vicésimal (base 20), le script ne marchera pas (il est facile d'ajouter des lettres pour chaque base, seulement je ne sais pas comment est répartie les nombres en base 76 ou 2393 ... Comment faire ? Si quelqu'un a une idée, elle est la bienvenue).


 
Hors ligne lemirandais # Posté le 17/07/2008 à 15:06:57
Ubuntu, Debian, Tiger USER
Avatar
Groupe : Membres
vive l'hexadecimal et le binaire.
 
Hors ligne Savageman # Posté le 17/07/2008 à 15:12:03
Insa : If inside
Avatar
Groupe : Membres
http://fr.php.net/base_convert ...

Rendez votre code plus compréhensible : utilisez les constantes !
 
Hors ligne lemirandais # Posté le 17/07/2008 à 15:14:36
Ubuntu, Debian, Tiger USER
Avatar
Groupe : Membres
oui, c'est sur, sa sera plus rapide avec sa.
 
Hors ligne robocop # Posté le 17/07/2008 à 15:25:04
Avatar
Groupe : Membres
Splu marrant de la coder :D !

Image utilisateur
 
Hors ligne lemirandais # Posté le 17/07/2008 à 16:18:37
Ubuntu, Debian, Tiger USER
Avatar
Groupe : Membres
robocop, c'est pas trop marrant de rire de lui. Il ne connaissait pas cette fonction.
Je viens de tester les 2. Il est vrai qu'elle fond le même résultat.
 
Hors ligne fppaty # Posté le 17/07/2008 à 16:20:19
Avatar
Groupe : Membres
Ah d'accord je ne connaissait pas la fonction :) En plus elle marcha a 100% celle de la doc ^^


 
Hors ligne robocop # Posté le 17/07/2008 à 17:54:12
Avatar
Groupe : Membres
lemirandais> J'étais sincère !
Il met moi aussi arrivé de coder des fonctions qui existaient déjà par défaut sans que je le sache, et finalement, malgrès le fait que ça soit un peu rageant d'avoir perdu son temps, c'est un travail toujours interessant !

Image utilisateur
 
Hors ligne Joachim. # Posté le 19/07/2008 à 01:06:14
<?php echo 'Hello World'; ?>
Avatar
Groupe : Membres
Script de pagination spécial,
Il donne les pages comme ceci :

<< 2 3 4 5 6 7 8 >>


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
<?php
/*
	@param $actu : Page actuelle
	@param $nbp : Nombre de page
*/

function get_pagination($actu,$nbp)
{

	if($nbp > 1)
	{
		$pagination['<<'] = 1;
		
		if($actu - 3 > 1 AND $actu + 3 < $nbp)
		{
			for($i = $actu - 3; $i <= $actu + 3; $i++)
			{	
				$pagination[$i] = $i;
			}
		}		
		
		elseif($actu - 3 <= 1)
		{
			if($actu + 3 > $nbp) $max = $nbp;	
			else $max = $actu + 3;
			
			for($i = 1; $i <= $max; $i++)
			{	
				$pagination[$i] = $i;
			}
		}
		
		else
		{
			for($i = $actu - 3; $i <= $nbp; $i++)
			{	
				$pagination[$i] = $i;
			}	
		}

		$pagination['>>'] = $nbp;	
	}
	
	else
	{
	$pagination[$nbp] = $nbp;
	}

	return $pagination;
}

?>


Exemple d'utilisation :
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?php

$page = get_pagination(5, 8);

foreach($page AS $key => $value)
{
	echo '<a href="http://monsite.com/index.php?page='.$value.'">'.$key.'</a>  ';
}

?>
Édité le 19/07/2008 à 01:31:04 par Joachim.
 
Hors ligne Bilbax # Posté le 19/07/2008 à 01:34:19
www.bilbax.eu
Avatar
Groupe : Membres
Pour la pagination j'utilise ceci :

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
<?php
function pageSystem(&$actuel, $nbEntity, $linkModel, $nbEntityPerPage = 15)
{
	if(!isset($actuel))
		$actuel = 1;
	$nbPage = ceil($nbEntity / $nbEntityPerPage);
	if($actuel > $nbPage) $actuel = $nbPage;
	if($actuel <= 0) $actuel = 1;
		
	$xhtml = ''; $i = 1;
	if($actuel > 1)
		$xhtml .= '<a href="'.str_replace('*', $actuel - 1, $linkModel).'">« Précédent</a> ? ';
	while($i <= $nbPage)
	{
		if(($i < 5) || ($i > $nbPage - 5) || (($i < $actuel + 5) && ($i > $actuel - 5)))
		{
			if($i == $actuel)
				$xhtml .= '<span class="pageActuelle">'.$i.'</span>, ';
			else
				$xhtml .= '<a href="'.str_replace('*', $i, $linkModel).'">'.$i.'</a>, ';
		}
		else
		{
			$xhtml = substr($xhtml, 0, strlen($xhtml)-2);
			if($i >= 3 && $i <= $actuel - 5)
				$i = $actuel - 5;
			elseif($i >= $actuel + 5 && $i <= $nbPage - 5)
				$i = $nbPage - 5;
			$xhtml .= ' ? <a href="#" onclick="var goToPage = prompt(\'Entrez le numéro de la page entre 1 et '.$nbPage.'\', 1); if(goToPage != null &amp;&amp; goToPage &gt;= 1 &amp;&amp; goToPage &lt;= '.$nbPage.' &amp;&amp; !isNaN(goToPage)) document.location.href = \''.str_replace('*', '\'+goToPage+\'', $linkModel).'\'; return false;">...</a> ? ';
		}
		
		if($i == $nbPage)
			$xhtml = substr($xhtml, 0, strlen($xhtml)-2);
		$i++;
	}
	if($actuel < $nbPage)
		$xhtml .= ' ? <a href="'.str_replace('*', $actuel + 1, $linkModel).'">Suivant »</a>';
	
	return Array(
		'nbPage' => $nbPage,
		'xhtml' => $xhtml,
		'limit' => $nbEntityPerPage.' OFFSET '.(($actuel - 1) * $nbEntityPerPage)
	);
}
?>


Utilisation :

Code : PHP
1
2
3
4
5
<?php
// Soit $nb le nombre d'entrés dans la BDD
$pg = pageSystem($_GET['page'], $nb, 'list.php?page=*', 30); // L'astérisque dans le troisième paramètre sera remplacé par le numéro de page
// Ensuite on utilise    $pg['limit']   dans la requête SQL, il va générer automatiquement le bon LIMIT
// On affiche la pagination avec    $pg['xhtml']
Édité le 19/07/2008 à 01:36:49 par Bilbax
Hors ligne Cortexd # Posté le 20/07/2008 à 23:19:53
Maouunnwww !
Avatar
Groupe : Membres
il y a plus simple Eurowindows :
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?php
function pagination($pages = 1, $current = 1, $range = 3)
{
    $pagination['<<'] = 1;
    $pagination['<'] = max(1, $current - 1);

    $numbers = range(max(1, $current - $range), min($current + $range, $pages));
    $pagination += array_combine($numbers, $numbers);
	
    $pagination['>'] = min($current + 1, $pages);
    $pagination['>>'] = $pages;

    return $pagination;
}
?>

Code : PHP
1
2
3
<?php
foreach (pagination(8, 5) as $label => $page)
    echo '<a href="index.php?p='.$page.'">'.$label.'</a> ';


en bonus, une fonction pour être certain d'avoir un entier compris entre deux autres :
Code : PHP
1
2
3
4
5
6
<?php
function mid($min, $mid, $max)
{
    return max($min, min($mid, $max));
}
?>

Code : PHP
1
2
<?php
echo mid(5, $_GET['p'], 14);
Édité le 20/07/2008 à 23:28:17 par Cortexd

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


 
Hors ligne Psykose # Posté le 25/07/2008 à 04:59:31
Carambaaa(r) !
Avatar
Groupe : Membres
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
<?php
# --------------------------------------------------------------------------------------
# string genereMot ( [int $nbsylabes] )
# Génère une chaine de caractères "lisible", selon un nombre de sylabes spécifié
# Fonction codée par Psykose
# --------------------------------------------------------------------------------------

	function genereMot($nbsylabes = 4){
		function siPair($nombre){
			if(ctype_digit($nombre/2))
				return true;
			else
				return false;
		}
		
		$groupeVoyelles = array('a', 'ai', 'au', 'e', 'eu', 'ey', 'i', 'ia', 'io', 'o', 'oi', 'ou', 'u', 'ua', 'ue', 'ui', 'y');
		$groupeConsonnes = array('b', 'c', 'cc', 'd', 'f', 'ff', 'g', 'ge', 'gue', 'j', 'l', 'm', 'mm', 'n', 'p', 'pp', 'que', 'r', 's', 't', 'tr', 'v', 'w', 'x', 'z');
		$finam = array('ille', 'lot', 'it', 'us');
		
		
		$str;
		
		if(siPair($nbsylabes) == true){
			for($i = 0; $i != $nbsylabes/2; $i++){
				$thisVoyelle = $groupeVoyelles[mt_rand(0, count($groupeVoyelles))];
				$thisConsonne = $groupeConsonnes[mt_rand(0, count($groupeConsonnes))];
				
				$str = $str . $thisConsonne . $thisVoyelle;
			}
		}
		else{
			$balance = true;
			for($i = 0; $i != $nbsylabes; $i++){
				if($i == count($nbsylabes-2)){
					$grpLettre = $finam[mt_rand(0, count($finam))];
				}
				else{
					if($balance == true){
						$grpLettre = $groupeConsonnes[mt_rand(0, count($groupeConsonnes))];
						$balance = false;
					}
					else{
						$grpLettre = $groupeVoyelles[mt_rand(0, count($groupeVoyelles))];
						$balance = true;
					}
				}
				
				$str = $str . $grpLettre;
			}
		}
		
		return $str;
	}
	
	// Générer un mot aléatoire en tre 2 et 7 sylabes; exemple d'utilisation :
	echo genereMot(mt_rand(2, 7));
?>

Mes tutos préférés :
Apprenez le Javascript - Dominos animables (blender) - Apprenez Maya
Mes tutos :
Créer une tête Cartoon avec Blender

Psykose's JukeboX : I - II - III - IV - V - Now extended ! - VI - VII - VIII
 
Hors ligne Quadehar # Posté le 25/07/2008 à 08:46:20
Avatar
Groupe : Membres
Rajoute une condition avec function_exists() avant de déclarer siPair, car si tu appelles deux fois ta fonction genereMot(), la fonction siPair est définie deux fois ce qui renvoit une erreur ;)

EDIT : personnellement je séparerais également les consonnes simples des doubles, afin de pouvoir ne placer les doubles qu'à l'intérieur d'un mot et éviter qu'elles se retrouvent à une des extrémités et d'obtenir des trucs comme "mmitoiiff".
Édité le 25/07/2008 à 08:50:27 par Quadehar

Wii Motion - Site sur la Wii proposant de nombreuses news, des dossiers, des previews, des tests et un forum.
 
Hors ligne Psykose # Posté le 25/07/2008 à 19:12:44
Carambaaa(r) !
Avatar
Groupe : Membres
Je suis actuellement en train de l'améliorer ^^
Je la refais presque entièrement étant donné que je vais en faire une cla