PHP

fab92320
Invité n'ayant pas de compte PHPfrance

28 avr. 2005, 11:41

bonjour, comment pourrais je remplacer une suite d'espace par un seul en PHP?
merci d'avance

Mammouth du PHP | 859 Messages

28 avr. 2005, 11:50

Comme ça :
<?php
$chaine = "bla		bla";
echo preg_replace("![[:space:]+]!", " ", $chaine);
//Affiche : bla bla
?>

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

28 avr. 2005, 13:03

Je profite de tra réponse, Flitox, pour demander un eclaircissement.
Quelle est la différence entre les fonctions preg_replace() et str_replace() ? :?:

Mammouth du PHP | 859 Messages

28 avr. 2005, 13:19

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.

Mammouth du PHP | 859 Messages

28 avr. 2005, 13:28

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 ;)

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

28 avr. 2005, 15:36

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...";

Mammouth du PHP | 859 Messages

28 avr. 2005, 15:59

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

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

28 avr. 2005, 17:01

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 !