Page 1 sur 1

PHP

Posté : 28 avr. 2005, 11:41
par fab92320
bonjour, comment pourrais je remplacer une suite d'espace par un seul en PHP?
merci d'avance

Posté : 28 avr. 2005, 11:50
par flitox
Comme ça :
<?php
$chaine = "bla		bla";
echo preg_replace("![[:space:]+]!", " ", $chaine);
//Affiche : bla bla
?>

Posté : 28 avr. 2005, 13:03
par albat
Je profite de tra réponse, Flitox, pour demander un eclaircissement.
Quelle est la différence entre les fonctions preg_replace() et str_replace() ? :?:

Posté : 28 avr. 2005, 13:19
par flitox
Si vous n'avez pas besoin de règles de remplacement compliquées, utilisez cette fonction de préférence à ereg_replace() et preg_replace().
preg_replace() se sert des expressions régulières donc les capacités de recherche d'une chaîne à remplacer sont bien plus étendues qu'un simple str_replace() qui nécessite à la base la connaissance de la chaîne qui va être remplacée.

Posté : 28 avr. 2005, 13:28
par flitox
Voilà 2 exemples albat' :

str_replace() :
<?php
$chaine = "le chaaaat est beaau";
echo str_replace("aaaa", "a", $chaine)."<br /><br />";
//Affiche : le chat est beaau
?>
beaau reste beaau car il n'a pas trouvé 4 "a" à la suite

Maintenant avec preg_replace() :
<?php
$chaine = "le chaaaat est beaau";
echo preg_replace("!a+!", "a", $chaine);
//Affiche : le chat est beau
?>
Dans la seconde solution il n'y a pas eu besoin de lui dire combien de "a" trouver pour qu'il corrige tout seul les fautes ;)

Posté : 28 avr. 2005, 15:36
par albat
Mouais... je maîtrise pas encore le truc.

Si je veux remplacer les é d'un texte par des &eacute;, que dois-je utiliser ?
$chaine_depart  = "Cette image a été créée...";
$chaine_arrivee = "Cette image a &eacute;t&eacute; cr&eacute;&eacute;e...";

Posté : 28 avr. 2005, 15:59
par flitox
Dans ton cas, tu as besoin d'un simple str_replace() puisque tu remplaces un caractère par un autre sans te soucier des critères de recherche.
<?php
$chaine_depart = "Cette image a été créée...";
$chaine_arrivee = str_replace("é", "&eacute;", $chaine_depart);
echo $chaine_arrivee;
?>

Posté : 28 avr. 2005, 17:01
par albat
Ah ben, j'suis bien content !
J'm'étais pas gouré alors... :langue:

En effet, je ne me préoccupe pas de remplacer n occurrences d'un caractères par un seul,
ce qui m'importe, c'est de remplacer chaque occurrence.

Merci !