OVH Cloud OVH Cloud

caracteres non alphabetiques

6 réponses
Avatar
helen
Bonjour,

Existe-t-il une instruction qui ôte les caractères non alphabétiques
d'une chaîne ? Par exemple, les traits d'union d'un prénom, ou les
apostrophes d'un nom ?
Plein d'excuses pour poser une question aussi triviale, mais je n'ai pas
beaucoup d'ancienneté dans ce langage..
Hélène

6 réponses

Avatar
Armel FAUVEAU
Bonjour,

Existe-t-il une instruction qui ôte les caractères non alphabétiques
d'une chaîne ? Par exemple, les traits d'union d'un prénom, ou les
apostrophes d'un nom ?
Plein d'excuses pour poser une question aussi triviale, mais je n'ai pas
beaucoup d'ancienneté dans ce langage..


Voir la fonction strtr().
http://fr2.php.net/manual/en/function.strtr.php

Exemple :

<?php
$chaine = "Monsieur- L'apin&";
$replace = array('-' => '', ''' => '', '&' => '');
$chaine = strtr($chaine, $replace);
echo $chaine;
?>

Il existe d'autres solutions. PHP propose souvent de nombreuses alternatives
:)

Armel.

Avatar
Laurent Seguin
helen , le 16 mai 2004 16:32:46, écrivait ceci:

Existe-t-il une instruction qui ôte les caractères non alphabétiques
d'une chaîne ? Par exemple, les traits d'union d'un prénom, ou les
apostrophes d'un nom ?


Perso j'utilise :
$chaine = eregi_replace("[^a-z0-9]", "", $chaine);

Avatar
helen
Armel FAUVEAU a écrit:
Bonjour,


Existe-t-il une instruction qui ôte les caractères non alphabétiques
d'une chaîne ? Par exemple, les traits d'union d'un prénom, ou les
apostrophes d'un nom ?
Plein d'excuses pour poser une question aussi triviale, mais je n'ai pas
beaucoup d'ancienneté dans ce langage..



Voir la fonction strtr().
http://fr2.php.net/manual/en/function.strtr.php

Exemple :

<?php
$chaine = "Monsieur- L'apin&";
$replace = array('-' => '', ''' => '', '&' => '');
$chaine = strtr($chaine, $replace);
echo $chaine;
?>

Il existe d'autres solutions. PHP propose souvent de nombreuses alternatives
:)

Armel.


Merci beaucoup, je vais travailler dans cette direction
Hélène


Avatar
helen
Laurent Seguin a écrit:
helen , le 16 mai 2004 16:32:46, écrivait ceci:


Existe-t-il une instruction qui ôte les caractères non alphabétiques
d'une chaîne ? Par exemple, les traits d'union d'un prénom, ou les
apostrophes d'un nom ?



Perso j'utilise :
$chaine = eregi_replace("[^a-z0-9]", "", $chaine);


C'était exactement ça que je recherchais. Merci, je vais pouvoir avancer
plus vite.
Hélène


Avatar
Stephane Pineau
Le 17 May 2004 21:58:25 GMT, helen écrivait:

Laurent Seguin a écrit:
...

Perso j'utilise :
$chaine = eregi_replace("[^a-z0-9]", "", $chaine);


C'était exactement ça que je recherchais. Merci, je vais pouvoir avancer
plus vite.


Les remplacements simples par expressions régulières sont vraiment à
utiliser en dernier recours car très consommatrices de cpu, pour peu que ce
soit dans une boucle ou dans une fonction apellée régulièrement ca se compte
autrement qu'en "poils de cul";-)

La syntaxe proposée par Armel à base strtr est déjà beaucoup plus rapide à
l'exécution (mais bien moins à la rédaction (faut déclarer chaque entrée du
tableau de conversion).

Voici une troisième approche qui aurait ma préférence (mais elle nécessite
comme la solution d'Armel de connaitre à priori la totalité des caractères
proscrits, et la déclaration d'un tableau, mais beaucoup plus simple).

$chaine="et ron petit patapon";
echo str_replace(array("a","e","i","o","u","y"),"",$chaine);

ici dans l'exemple les voyelle déclarées dans la partie array() sont
remplacées par rien "" dans $chaine (au passage on évite en général de créer
une variable tableau pour ce genre d'usage hormis pour des raisons de
lisibilité comme dans l'exemple d'Armel, d'ou ici le array directement codé
dans le str_replace)

http://www.php.net/manual/fr/function.str-replace.php


Cdlt,
Stéph'

--
AcroDict : Dictionnaire francophone des acronymes informatiques
<URL:http://www.teaser.fr/~spineau/acrodict/index.htm>
PHP Page : Script PHP3 Gratuits (Forum, Gestionnaires BDD, etc..)
<URL:http://steph.pineau.free.fr/php/index.php>


Avatar
Laurent Seguin
Stephane Pineau , le 19 mai 2004 22:00:28, écrivait
ceci:

Les remplacements simples par expressions régulières sont vraiment à
utiliser en dernier recours car très consommatrices de cpu,


La pas d'accord pas en dernier recours, mais à utiliser la ou c'est adapté.

pour peu
que ce soit dans une boucle ou dans une fonction apellée régulièrement
ca se compte autrement qu'en "poils de cul";-)


Si c'est pour faire du nettoyage d'une chaine type "prenom" "nom" ou petite
chaines, comme le demandait helen, AMHA la consomation se mesure en poil de
patte de fourmie. Maintenant si c'est pour un gros texte ou destiné à être
appelé en boucle, je suis tout à fait d'accord ce n'est pas adapté et il
est préférable de se tourner vers une autre méthode.