Remplacer les ? et ponctuation ainsi que les espaces dans une chaine de caractèr

cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011 - 14 mars 2007 à 11:02
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 18 mars 2007 à 12:35
Bonjour j'ai une chaine de caractère qui est du type ...

$chaine = 'bien choisir son pc ?';

dans cette chaine je voudrais supprimer les ponctuations :  .,?!:...

et ensuite remplacer les espaces par _

pour arriver à une chaine modifiée du genre :

$chainemodifiee = 'bien_choisir_son_pc';

merci de votre aide précieuse.

12 réponses

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
14 mars 2007 à 11:43
Yop!
$chaine = str_replace( array( '?', ',', '.', ':', '!'), '_', $chaine );

A toi de lister ce que tu veux... :)

@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
2
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
14 mars 2007 à 11:41
salut
utilise preg_replace
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
14 mars 2007 à 11:56
merci a vous deux ..

cookiesch ce que tu m'as indiqué remplace toute la ponctuation par _ moi ce que je voudrais c'est d'abord supprimer la ponctuation de la chaine et ensuite remplacer les espaces par _

$chainedepart = 'bien choisir son pc ?';

$chianemodifiee = 'bien_choisir_son_pc';

merci pour votre aide ...
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
14 mars 2007 à 12:43
un truc genre ca
$q=preg_replace('/[:ponc:]/', '_', $q);
$q=preg_replace('/[:space:]/', '_', $q);

lis la doc sur les pregs
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
14 mars 2007 à 14:47
bon j'ai lu la doc ...
voila ce que j'ai essayé de faire ..  et ca ne donne rien .. je ne sais plus comment faire là ...

$chaine = $titrearticle ;
function OterAccents($chaine) {
return( strtr( $chaine,
 "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
 "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn" ) );
 }
$patterns[0] = '/?/';
$patterns[1] = '/:/';
$patterns[2] = '/./';
$patterns[3] = '/;/';
$patterns[4] = '/!/';
$patterns[5] = '/\'/';
$replacements[5] = '';
$replacements[4] = '';
$replacements[3] = '';
$replacements[2] = '';
$replacements[1] = '';
$replacements[0] = '';
$chaine = preg_replace($patterns, $replacements, $chaine);
$chaine = str_replace( '', '_', $chaine );

merci de votre aide
0
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
14 mars 2007 à 16:44
Salut,
Bon déjà je dis un grand "LOL" pour ton code Loupile.
Comment tu comptes replacer du vide '' par un underscore _ ?

L'idée d'utiliser un "preg_replace" n'est pas mal mais si la chaine contient des crochets ou tout autres caractères d'une expression régulière c'est fichu.

Donc il faut appliquer un "str_replace" comme la dis "coockiesch" se qui donnera : <?php
$chaine = 'bien choisir son pc ?';
$chaine = str_replace(array('.', ',', '?', '!', ':', '_', ' ', '.'), '_', $chaine);
echo$chaine;
?>

For every choice, a consequence (Fable)
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
14 mars 2007 à 16:55
alors je m'en suis sorti seul ...  voici ce que j'ai fais .. .ca marche super ...
comme quoi on peut remplacer du vide par _ .... audayls :-p

function OterAccents($chaine) {
return( strtr( $chaine,
 "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
 "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn" ) );
 }
$chaine = OterAccents($chaine);
function ponctuation($chaine) {
return( strtr( $chaine,
"?...:!,.\'-",
"           ") );
}
$chaine = ponctuation($chaine);
$chaine = trim($chaine);
$chaine = str_replace( ' ', '_', $chaine );
0
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
14 mars 2007 à 17:05
"comme quoi on peut remplacer du vide par _ .... audayls :-p"
Nan nan nan on ne peut pas

Ce n'est pas le même paramètre search dans les 2 "str_replace" : le premier c'est '' (une chaine string vide) et le second c'est ' ' (une chaine string contenant un espace) c'est là la différence

For every choice, a consequence (Fable)
0
DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 1
14 mars 2007 à 17:06
Hello,

voici une solution possible:

<?php
$string = "bien choisir son pc";

$pattern = array('#\s#i','#\W#i');
$replacement = array('_','');
$result = preg_replace($pattern,$replacement,$string);

echo $result;
?>

Parsing à améliorer !
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
14 mars 2007 à 17:38
...

http://fr3.php.net/manual/fr/reference.pcre.pattern.syntax.php
<?php

$q='test, test';
$q=preg_replace('/\p{P}/', '', $q);
$q=preg_replace('/\s/', '_', $q);

echo $q;

?>



vous n'avez pas du chercher longtemps en direction de la piste que j'avais donne... ca m'a pris deux minutes
0
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
14 mars 2007 à 21:43
Bizarre bizarre sur ma version de PHP celà ne fonctionne pas mais sur lorsque je l'essaye sur une autre version tout va impecable... C'est quoi cette arnaque o_O (manques de chance encore une fois...)
Bon on s'en fout après tout... je mets à jours Wamp

For every choice, a consequence (Fable)
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
18 mars 2007 à 12:35
Salut,

faudrait faire reponse accepter...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

0
Rejoignez-nous