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  ...  78  79  80  81  82  83  84  ...  93  94  95  96  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  ...  78  79  80  81  82  83  84  ...  93  94  95  96  Suivante
Hors ligne Jerry Wham # Posté le 14/04/2008 à 12:41:11
1castorMangé,1arbreSauvé
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
Auteur: Jerry Wham
Type: Fonction / Astuce
But: Formater des numéros de téléphone
Code:
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. function format_tel($string)
  3. {
  4.         $string = str_replace(' ','',$string);
  5.         $string = strrev(chunk_split (strrev($string), 2,'.'));
  6.         $string = substr($string, 1);
  7.         return $string;
  8. }
  9. ?>

Exemple:numéro de téléphone 01 020304 05
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. $tel_avant = "01  020304 05";
  3. $tel_apres = format_tel($tel_avant);
  4.  
  5. echo 'numéro de téléphone avant '.$tel_avant.'<br/>numéro de téléphone après.'$tel_apres;
  6. ?>

Citation : Rendu

numéro de téléphone avant 01 020304 05
numéro de téléphone après 01.02.03.04.05
Édité le 14/04/2008 à 13:47:19 par Jerry Wham
 
Hors ligne Thomas10101 # Posté le 14/04/2008 à 12:48:51
Avatar
Groupe : Membres
Astuce permettant de compresser vos pages et ainsi améliorer la vitesse :
Il suffit de rajouter cette ligne avant tout code HTML :
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. ob_start("ob_gzhandler");
  3. ?>


Pratique non ?
 
Hors ligne metalking # Posté le 14/04/2008 à 17:10:51
Knowledge is Power
Avatar
Groupe : Membres
Citation : Thomas10101
Astuce permettant de compresser vos pages et ainsi améliorer la vitesse :
Il suffit de rajouter cette ligne avant tout code HTML :
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. ob_start("ob_gzhandler");
  3. ?>


Pratique non ?


Est-ce que ça améliore vraiment la vitesse? A mon avis la compression ne peut que ralentir le chargement. Par contre ça diminue la quantité de bande passante utilisée, mais ça c'est utile pour le site, pas pour le visiteur...

A+
 
Hors ligne TimeSplitters # Posté le 14/04/2008 à 17:18:05
Avatar
Groupe : Membres
C'est pas utile de mettre des points entre chaque duo de chiffres. Et c'est plus clair je trouve avec des espaces!

Des développeurs par ci et des graphistes par là, sans oublier les recruteurs (porteurs de projets) ! | TimeSplitters Games :)
 
Hors ligne robocop # Posté le 14/04/2008 à 17:48:15
Avatar
Groupe : Membres
Citation : metalking
Citation : Thomas10101
Astuce permettant de compresser vos pages et ainsi améliorer la vitesse :
Il suffit de rajouter cette ligne avant tout code HTML :
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. ob_start("ob_gzhandler");
  3. ?>


Pratique non ?


Est-ce que ça améliore vraiment la vitesse? A mon avis la compression ne peut que ralentir le chargement. Par contre ça diminue la quantité de bande passante utilisée, mais ça c'est utile pour le site, pas pour le visiteur...

A+


En fait, c'est surtout utile pour pouvoir mettre des header(), ou déclarer des cookies après du code html.
 
Hors ligne Artefact2 # Posté le 14/04/2008 à 18:21:56
C'est toi le bouc !
Avatar
Groupe : Membres
Citation : Thomas10101
Astuce permettant de compresser vos pages et ainsi améliorer la vitesse :
Il suffit de rajouter cette ligne avant tout code HTML :
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. ob_start("ob_gzhandler");
  3. ?>


Pratique non ?


Bof. Je préfère laisser Apache faire ce travail : mod_deflate.
C'est plus pratique et beaucoup plus efficace. Et oui, ca accélère le chargement (page moins lourde) et ca permet de gaspiller moins vite son quota de bande passante (pages moins lourdes <=> plus de pages). En revanche, ca bouffe plus de CPU. Faut donc choisir un juste équilibre dans le niveau de compression.

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 Lynix # Posté le 14/04/2008 à 20:28:44
Graphiste 3D
Avatar
Groupe : Membres
Citation : Thomas10101
Astuce permettant de compresser vos pages et ainsi améliorer la vitesse :
Il suffit de rajouter cette ligne avant tout code HTML :
Code : PHP
1
2
3
<?php
ob_start("ob_gzhandler");
?>


Pratique non ?


Non
Tu oublies de préciser que tu dois ensuite renvoyer la page après tout le code html avec ob_end_flush()
Et ça n'améliorera jamais la vitesse, ça compressera la page pour diminuer la bande passante, mais rien d'autre
 
Hors ligne Artefact2 # Posté le 14/04/2008 à 23:20:46
C'est toi le bouc !
Avatar
Groupe : Membres
Citation : Lynix

Non
Tu oublies de préciser que tu dois ensuite renvoyer la page après tout le code html avec ob_end_flush()
Et ça n'améliorera jamais la vitesse, ça compressera la page pour diminuer la bande passante, mais rien d'autre


Tout dépend de quelle vitesse tu parle.

La vitesse de chargement de la page : plus rapide, on transfère moins de données.
La vitesse de génération de la page : plus lent, on doit compresser les données.

Cf mon post plus haut.

Hs : jôli Pygments :p

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 Thomas10101 # Posté le 15/04/2008 à 10:25:42
Avatar
Groupe : Membres
Ba si vous êtes pas au ms prêt ouais d'accord mais sinon.... et puis ça dépent de la taille de la page
 
Hors ligne Artefact2 # Posté le 15/04/2008 à 11:51:39
C'est toi le bouc !
Avatar
Groupe : Membres
Citation : Thomas10101
Ba si vous êtes pas au ms prêt ouais d'accord mais sinon.... et puis ça dépent de la taille de la page


Heureusement que si. C'est le but de l'optimisation d'un site web. On grapille le plus un peu partout pour mieux supporter la charge. Après évidemment, si c'est pour un site perso de 3 pages... La on s'en tape un peu ^^

Edit : voici un log Apache. Le pourcentage correspond au ratio de compression (par exemple, le fichier compressé fait 29 % de la taille originale).
Image utilisateur
Édité le 15/04/2008 à 12:17:45 par Artefact2

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 Jeremie78 # Posté le 15/04/2008 à 18:03:43
Powered by GNU/Linux
Groupe : Membres
En fait, compresser allonge le temps de génération de la page mais diminue le temps d'envoie de la page (pour les petites connexions).

Pour moi, c'est surtout utile pour ne plus s'embêter avec les header() et les setcookie() !

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne Lynix # Posté le 15/04/2008 à 18:26:07
Graphiste 3D
Avatar
Groupe : Membres
Si tu veux juste pouvoir envoyer des header n'importe quand, t'as juste besoin de ob_start();
 
Hors ligne Jeremie78 # Posté le 15/04/2008 à 20:46:30
Powered by GNU/Linux
Groupe : Membres
En effet.
Mais autant utiliser la compression au passage, tant qu'a faire ^^

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne Artefact2 # Posté le 15/04/2008 à 20:53:06
C'est toi le bouc !
Avatar
Groupe : Membres
Citation : Jeremie78
En effet.
Mais autant utiliser la compression au passage, tant qu'a faire ^^


Justement non. C'est mieux d'utiliser un module Apache (mod_deflate ou mod_gzip) compilé en dur et bien optimisé pour compresser les pages qu'un truc en PHP.

Citation : Php.net/ob_start
If you're using Apache (1.3x or 2.0), you might consider adding automatic compression capability to your delivered pages.

I assume you all know how to build compression classes and use them in your programs, but none has yet to offer the speed and robustness of a binary-compiled module. Furthermore, such modules also log the "compressable" hit in the web log file, thus allowing your favorite web anaysing program to show you reports of bandwidth saved.

Having said that, you might consider the following two modules for Apache:

1) Apache 1.3x: use mod_gzip, available from:
http://sourceforge.net/projects/mod-gzip/

2) Apache 2.x: use mod_gz, see here:
http://www.mail-archive.com/dev@httpd. [...] sg00734.html

3) Apache 1.3x: you may also want to use mod_defalte, from:
ftp://ftp.lexa.ru/pub/apache-rus/contrib/


Bon, j'arrête de débattre. Je fais dériver le sujet :-°

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 Jerry Wham # Posté le 16/04/2008 à 00:55:38
1castorMangé,1arbreSauvé
Avatar
Groupe : Membres
Citation : TimeSplitters
C'est pas utile de mettre des points entre chaque duo de chiffres. Et c'est plus clair je trouve avec des espaces!


Et bien moi je trouve que si. Il est plus facile de lire le numéro ainsi formaté. Et si les points ne te satisfont pas, tu peux modifier la fonction et mettre des espaces...

Après c'est une histoire de goût mais je trouve ma fonction utile.
 
Hors ligne MmeWood # Posté le 16/04/2008 à 01:17:52
Peace & Love ^^
Avatar
Groupe : Membres
Point, virgule, espace, slash tout ça c'est une affaire de goût ...
L'essentiel de la fonction réside dans l'analyse du numéro et le découpage en paire de 2 chiffre.
Ce qu'on y met entre est à la préférence du codeur !
Cela peut être très utile et résoudre des problèmes de fautes de clavier par exemple ou afin d'harmoniser
Hors ligne Talus # Posté le 16/04/2008 à 08:29:39
タルス
Avatar
Groupe : Membres
Ce que je pense, c'est qu'il faudrait plus que tu renvoies un array. Enfin, remarque, parfois, on dispose aussi les numéros dans un autre ordre, genre :
012 345 6789, 01 23 45 67 89, 0123456789, ... les possibilités sont nombreuses et variées.

Donc, au lieu de fournir vingt mille parametres (connaitre le séparateur, le nombre de chiffres, etc), soit on fait pas de fonction (surtout qu'on l'utilise pas souvent...), soit on renvoi un array en fonction du numéro et du nombre de "caractères", ...

Pour l'histoire d'harmoniser, pas forcemment besoin d'une fonction :)
Édité le 16/04/2008 à 08:30:21 par Talus
 
Hors ligne Jerry Wham # Posté le 16/04/2008 à 11:34:53
1castorMangé,1arbreSauvé
Avatar
Groupe : Membres
Citation : Talus
Ce que je pense, c'est qu'il faudrait plus que tu renvoies un array. Enfin, remarque, parfois, on dispose aussi les numéros dans un autre ordre, genre :
012 345 6789, 01 23 45 67 89, 0123456789, ... les possibilités sont nombreuses et variées.

Donc, au lieu de fournir vingt mille parametres (connaitre le séparateur, le nombre de chiffres, etc), soit on fait pas de fonction (surtout qu'on l'utilise pas souvent...), soit on renvoi un array en fonction du numéro et du nombre de "caractères", ...

Pour l'histoire d'harmoniser, pas forcemment besoin d'une fonction :)


Peux-tu préciser s'il te plait la façon dont tu utiliserais cet array? Tu mettrais quoi dedans, je n'ai pas bien compris (les séparateurs???).

Pour ce qui est de la fréquence d'utilisation d'une fonction, tout dépend de tes besoins. Si je l'ai écrite, c'est qu'elle m'est nécessaire pour harmoniser l'affichage de numéros de tél sur un site.
 
Hors ligne S0pra # Posté le 16/04/2008 à 11:37:24
Avatar
Groupe : Membres
Salut,
Je risque d'en avoir besoin alors je te récupère cette fonction :) Merci !
Dans l'array, un peu comme pour la fonction de pagination, tu renverrais chaque numéro séparé, si j'ai bien compris.

A+
 
Hors ligne Jerry Wham # Posté le 16/04/2008 à 11:43:57
1castorMangé,1arbreSauvé
Avatar
Groupe : Membres
Citation : S0pra
Salut,
Je risque d'en avoir besoin alors je te récupère cette fonction :) Merci !
Dans l'array, un peu comme pour la fonction de pagination, tu renverrais chaque numéro séparé, si j'ai bien compris.

A+


C'est pas un peu lourd comme solution? J'ai l'impression avec cet array qu'on utilise un bazooka pour écraser une mouche...

Ma fonction visant à harmoniser un affichage, il n'y a qu'un paramètre à modifier au départ (le séparateur qui peut être un point, un espace, au choix en fonction de l'affichage que l'on veut au final).
 
Hors ligne Talus # Posté le 16/04/2008 à 18:19:20
タルス
Avatar
Groupe : Membres
ben justement, c'est que tu renvoies un array, avec dedans le nombre de chiffres que tu souhaites avoir par elements :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?php
function harmonisation_nb($numero, $nb_chiffres){
 //.... Traitement
}

$numeros = harmonisation_nb('01 3 3 234 2344', 2); // array('01','33','23','32','34','4');

$numeros = harmonisation_nb('01 3 3 234 2344', 4); // array('0133','2332','344');

$numeros = harmonisation_nb('01 3 3 234 2344', 3); // array('013', '323' 323','44');


Etc. Après, un implode ou ce que tu veux pour ajouter ton point, ton machin, etc.

EDIT > En effet, très jolie la colorisation sous Pygements.
Édité le 16/04/2008 à 18:19:49 par Talus
 
Hors ligne Jerry Wham # Posté le 17/04/2008 à 09:54:25
1castorMangé,1arbreSauvé
Avatar
Groupe : Membres
Voila une nouvelle version paramétrable sans array. ;)

Auteur: Jerry Wham
Type: Fonction / Astuce
But: Formater des numéros de téléphone (version 2)
Code:

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?php
function format_tel($string,$separateur,$nb_caracteres)
{
        $string = str_replace(' ','',$string);
        $string = strrev(chunk_split (strrev($string), $nb_caracteres,$separateur));
        $string = substr($string, 1);
        return $string;
}

echo 
format_tel('0 1 235 4 4 1 00','-',1).'<br/>'.
format_tel('0 1 235 4 4 1 00','.',2).'<br/>'.
format_tel('0 1 235 4 4 1 00','/',3).'<br/>'.
format_tel('0 1 235 4 4 1 00',' ',4);
?>


Rendu :

Code : Autre
1
2
3
4
0-1-2-3-5-4-4-1-0-0
01.23.54.41.00
0/123/544/100
01 2354 4100
Édité le 17/04/2008 à 09:57:51 par Jerry Wham
 
Hors ligne MmeWood # Posté le 17/04/2008 à 14:19:14
Peace & Love ^^
Avatar
Groupe : Membres
J'y pense... Et si la personne qui rentre son numéro le formatais elle-même ça donnerait quoi ?
Code : PHP
1
2
3
4
5
6
<?php
format_tel('01.01.01.01.01','-',1).'<br/>'.
format_tel('01/01/01/01/01','.',2).'<br/>'.
format_tel('01 01 01 01 01','/',3).'<br/>'.
format_tel('01-01-01-01-01',' ',4);
?>
Hors ligne anonyme # Posté le 17/04/2008 à 14:21:56
Groupe :
Suffit de remplacer le str_replace par un preg_replace('`[^[:digit:]]`', '', $s).
Hors ligne Jerry Wham # Posté le 17/04/2008 à 15:38:07
1castorMangé,1arbreSauvé
Avatar
Groupe : Membres
Bien vu `Haku ;)

Auteur: Jerry Wham / `Haku
Type: Fonction / Astuce
But: Formater des numéros de téléphone (version 3)
Code:

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?php
function format_tel($string,$separateur,$nb_caracteres)
{
        $string = preg_replace('`[^[:digit:]]`', '', $string);
        $string = strrev(chunk_split (strrev($string), $nb_caracteres,$separateur));
        $string = substr($string, 1);
        return $string;
}

echo 
format_tel('0 1 235 4 4 1 00','-',1).'<br/>'.
format_tel('0 1 235 4 4 1 00','.',2).'<br/>'.
format_tel('0 1 235 4 4 1 00','/',3).'<br/>'.
format_tel('0 1 235 4 4 1 00',' ',4).'<br/><br/>'.

format_tel('01.01.01.01.01','-',1).'<br/>'.
format_tel('01/01/01/01/01','.',2).'<br/>'.
format_tel('01 01 01 01 01','/',3).'<br/>'.
format_tel('01-01-01-01-01',' ',4);
?>


Rendu :

Code : Autre
1
2
3
4
5
6
7
8
9
0-1-2-3-5-4-4-1-0-0
01.23.54.41.00
0/123/544/100
01 2354 4100

0-1-0-1-0-1-0-1-0-1
01.01.01.01.01
0/101/010/101
01 0101 0101


Pour regrouper tous les chiffres, il suffit de mettre un $nb_caracteres supérieur ou égal au nombre de chiffres à formater.

Exemple:
Code : PHP
1
2
3
<?php
format_tel('01-01-01-01-01',' ',12);
?>


Rendu :
Code : Autre
1
0101010101
 
Hors ligne Cortexd # Posté le 17/04/2008 à 15:59:52
Maouunnwww !
Avatar
Groupe : Membres
pourquoi tu fais deux strrev() ?
Code : PHP
1
2
3
<?php
$string = str_split($string, $nb_caracteres);
return implode($separateur, $string);

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


 
Hors ligne Lynix # Posté le 17/04/2008 à 18:58:20
Graphiste 3D
Avatar
Groupe : Membres
Comme ça si tu décides de regrouper par 4 chiffres, les deux "premiers" seront par deux
 
Hors ligne Gyzmo # Posté le 18/04/2008 à 09:05:36
The Gyzmaster
Avatar
Groupe : Membres
J'avais fais une fonction qui permettait de standardiser un numéro de téléphone et de dire si il est valide ou non :

Auteur: Gyzmo
Type: Fonction / Astuce
But: Formater des numéros de téléphone (version 4)
Code:

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?php

// permet de formater le numéro de téléphone
function format_tel( $tel )
{
	$tel = str_replace(' ','',$tel);
	$tel = str_replace('.','',$tel);
	$tel = str_replace('-','',$tel);
	if ( strlen($tel) == 10 ) $tel = substr($tel, 0, 2).' '.substr($tel, 2, 2).' '.substr($tel, 4, 2).' '.substr($tel, 6, 2).' '.substr($tel, 8, 2);
	return $tel;
}

// on vérifie que le numéro entré par l'utilisateur est valide
if ( !preg_match("#^0[1-58] [0-9]{2} [0-9]{2} [0-9]{2} [0-9]{2}$#", format_tel($numtel)) )
{
echo '<p>Votre numéro de téléphone fixe n\'est pas valide. Entrez un numéro à 10 chiffres.</p>';
}
else echo '<p>Numéro valide</p>'

?>



Qu'en pensez vous ?
 
Hors ligne Jerry Wham # Posté le 18/04/2008 à 09:58:54
1castorMangé,1arbreSauvé
Avatar
Groupe : Membres
Comme l'a suggéré `Haku, les 3 premières lignes peuvent être avantageusement remplacées par
Code : PHP
1
2
3
<?php
$string = preg_replace('`[^[:digit:]]`', '', $string);
?>


et la ligne de formatage, comme l'a proposé Cortexd, par
Code : PHP
1
2
3
4
<?php
if ( strlen($tel) == 10 ) $string = str_split($string, $nb_caracteres);
return implode($separateur, $string);
?>


et la regex peut être optimisée comme suit :
Code : PHP
1
2
3
<?php
preg_match('`^0[0-58]([-.]?[0-9]{2}){4}$`',format_tel($numtel));
?>


Et pour répondre à Cortexd, cf Lynix. ^^
Édité le 18/04/2008 à 10:39:09 par Jerry Wham
 
Hors ligne hinomi # Posté le 24/04/2008 à 09:08:20
Web developpeur
Groupe : Membres
Auteur : Hinomi
Type : Fonction/ Astuce
But: Styliser une texte grace à un code (tel zcode) extensible et personalisable

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

//-------------------------------//
//------Script HMCode------//
// Crée par Hinomi Mokuzo//
//------------------------------//

function MCode($texte) {

	//------------------------------//
	//Initialisation des balises//
	//------------------------------//

	// On initialise la liste des balises disponibles
	$xml = file_get_contents("MCode.xml");
	// Listing des balises autorisés
	preg_match_all("#<balise nom=\"(\w+)\">(.*)</balise>#isU", $xml, $balises);
	// On les enregistre dans un tableau
	for ($x = 0 ; $x < count($balises[1]) ; $x++) {
		// Liste des balises
		$authorizedBaliseList[$x] = $balises[1][$x];
		// Liste des balises correspondante
		preg_match("#<nom>(\w+)</nom>#isU", $balises[2][$x], $baliseName);
		$nameBaliseList[$x] = $baliseName[1];
		// Listing des attributs de la balise
		preg_match_all("#<param nom=\"(\w+)\">(\w+)</param>#isU", $balises[2][$x], $attribs);
		for ($y = 0 ; $y < count($attribs[1]) ; $y++) {
			$attribsBaliseList[$balises[1][$x]][$attribs[1][$y]] = $attribs[2][$y];
		}
	}
	
	//--------------------------//
	//Initialisation des clés//
	//--------------------------//
	preg_match_all("#<cle nom=\"(\w*)\">(\w*)</cle>#isU", $xml, $cle);
	for ($x = 0 ; $x < count($cle[1]) ; $x++) {
		$cles[$cle[1][$x]] = $cle[2][$x];
	}
	
	// On vide la variable $balises pour la réutilisé aprés
	$balises = null;
	$attribs = null;
	
	//------------------------//
	//Stylisation du texte//
	//------------------------//
	
	// On désactive le HTML
	$texte = htmlentities($texte);
	// On remet la balise <br/> afin de permettre les sauts de lignes
	$texte = str_replace("&lt;br/&gt;", "<br/>", $texte);
	// On recherche les différentes balises du texte et on renvoi le nom et les attributs
	preg_match_all("#&lt;([\w =\']+)&gt;#isU", $texte, $balises);
	// On vérifie les balises une à une
	for ($x = 0 ; $x < count($balises[1]) ; $x++) {
		// On sépare le nom et les attributs des balises
		preg_match("#(\w+)((?: \w+='\w+')*)#", $balises[1][$x], $balise);
		// On vérifie si la balise fait parti des balises autorisé (enregistrés dans la lsite au début du code)
		if (in_array($balise[1], $authorizedBaliseList)) { 
			// On enregistre le nom actuel de la balise
			$oldName = $balise[1];
			// On vérifie que la balise est fermé
			if (preg_match("#&lt;".$balise[0]."&gt;(.*)&lt;/".$oldName."&gt;#isU", $texte)) {
				// Ainsi que la liste des attributs
				$oldAttribs = $balise[2];
				// On recupere le nom de balise par lequel on va remplacer la balise actuel
				$newName = $nameBaliseList[array_search($oldName, $authorizedBaliseList)];
				// On itilialise la variable dans laquel sera contenu la nouvelle liste d'attributs.
				$newAttribs = "";
				// Si il y a des attributs
				if (!empty($oldAttribs)) {
					// On sépare les différents attributs
					preg_match_all("#(\w*)='(\w*)'#isU", $oldAttribs, $attribs);
					// On remplace tous les nom d'attributs par leur equivalent HTML
					for ($y = 0 ; $y < count($attribs[1]) ; $y++) {
						// Si l'attribut existe pour la balise actuel
						if (!empty($attribsBaliseList[$oldName][$attribs[1][$y]]))
							$newAttribs.=" ".$attribsBaliseList[$oldName][$attribs[1][$y]]."=\"".((!empty($cles[$attribs[2][$y]]))?($cles[$attribs[2][$y]]):$attribs[2][$y])."\"";
					}
				}
				// On remplace la balise de stylisation par la balise HTML
				$texte = preg_replace("#&lt;".$oldName.$oldAttribs."&gt;(.*)&lt;/".$oldName."&gt;#isU", "<".$newName.$newAttribs.">$1</".$newName.">", $texte);
			}
		}
	}
	// Bah maintenant c'est fini on retourne le texte stylisé
	return $texte;
}

// Voila, vous pouvez éteindre votre ordinateur et reprendre une activité normal
// A tchao bon dimanche :p

?>


Exemple d'utilisation:
Code : PHP
1
<?php MCode("<style taille='4' couleur='bleu'>Plouf</style>"); ?>


Ce qui donne :
Citation : Rendu de la fonction
Plouf



Voila...
Bon la fonction est faites de tel manière que toutes les balises sont personalisable (changer le nom, les parametres et permet de faire un code multilingue) et sont enregistrer dans un fichier xml ce facilite la personalisation.

Pour finir un exemple de fichier MCode.xml
Code : XML
 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
<balise nom="style">
	<nom>font</nom>
	<param nom="couleur">color</param>
	<param nom="taille">size</param>
</balise>

<balise nom="gras">
	<nom>b</nom>
</balise>
<balise nom="italique">
	<nom>i</nom>
</balise>
<balise nom="souligne">
	<nom>u</nom>
</balise>

<balise nom="lien">
	<nom>a</nom>
	<param nom="url">href</param>
</balise>

<balise nom="tableau">
	<nom>table</nom>
	<param nom="largeur">width</param>
	<param nom="hauteur">height</param>
	<param nom="couleurFond">bgcolor</param>
	<param nom="couleurBordure">bordercolor</param>
	<param nom="tailleBordure">border</param>
</balise>

<balise nom="ligne">
	<nom>tr</nom>
</balise>

<balise nom="cellule">
	<nom>td</nom>
	<param nom="largeur">width</param>
	<param nom="hauteur">height</param>
	<param nom="couleurFond">bgcolor</param>
	<param nom="couleurBordure">bordercolor</param>
	<param nom="fusion">colspan</param>
	<param nom="alignement">align</param>
</balise>

<cles>
	<cle nom="rouge">red</cle>
	<cle nom="bleu">blue</cle>
</cles>

Internet n'as pour limite que votre imagination. ^^ (et la limite du débit de votre modem :p )
Image utilisateur
Image utilisateur
Image utilisateur
 
Hors ligne TimeSplitters # Posté le 24/04/2008 à 12:54:52
Avatar
Groupe : Membres
oO Puissant!

Merci, je commençais à recoder ma fonction de parsage et je perdais courage. Super ta fonction!

Edit: cependant, c'est quoi <cles> ?
Édité le 24/04/2008 à 13:00:39 par TimeSplitters

Des développeurs par ci et des graphistes par là, sans oublier les recruteurs (porteurs de projets) ! | TimeSplitters Games :)
 

Retour au forum "PHP" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 482 Zéros connectés | Requêtes SQL 7 requêtes | Temps de génération de la page : Total (SQL) 0.3073s (0.2709s)