Rechercher : dans
Par :

[PHP] Interdire des caracteres dans 1 chaine

Dernière réponse le 1 sep 2006 à 20:22:53 Nico, le 1 sep 2006 à 10:30:49 
 Signaler ce message aux modérateurs

Salut à tous, j'ai besoin de votre aide :

je récupere une chaine d'un post, et je souhaite envoyer un message d'erreur si cette chaine contient des caracteres differents de : 0 1 2 3 4 5 6 7 8 9 ( ) + - / *

Comment faire ? dois verifier chaque caractere de ma chaine les 1 apres les autres et voir s'ils sont bien dans la liste,
ou y a t-il une solution plus simple et propre ?

merci à vous.

Meilleures réponses pour « [PHP] Interdire des caracteres dans 1 chaine » dans :
PHP - Nettoyer une chaîne de caractères Voir Voici une fonction en PHP qui peut être assez pratique, surtout quand on fait de l'URL Rewriting. Cette fonction permet de transformer les caractères de n'importe quelle chaîne de caractères en chaîne non accentuée, en enlevant les caractères...
Javascript - Concaténation de chaînes de caractères VoirLe terme "concaténer" signifie joindre deux chaînes bout à bout pour n'en former qu'une seule. Dans la plupart des langages tels que PHP, la concaténation se fait avec le caractère ".". En javascript, il suffit d'utiliser le caractère plus (+) ou...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...
PHP - Expressions régulières VoirQu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...

1

teebo, le 1 sep 2006 à 11:11:05

Salut

Cherche regex, ou "expression reguliere" si tu es résolument francophone...
-Il a pas l'air terrible !
-Faut pas s'y fier, car personne n'en est ressorti ! [...]Faut dire aussi que personne y est entré

Répondre à teebo

2

Nico, le 1 sep 2006 à 11:56:16

Merci pour ta reponse Teebo,

mais en regardant ce que fait ereg(), je ne pense pas qu'elle soit adapté à ce que je veux faire.
En effet, elle permet de vérifier si une chaine est présente dans une autre. Donc, pour mon cas, il faudrait que j'autilise ereg() en recherchant tous les caractères que je souhaite interdire (#, a, b, c, d.... ) soit un nombre énorme ... et c'est donc ingérable...

non ?

Répondre à Nico

3

teebo, le 1 sep 2006 à 12:56:49

C'est l'intérêt de regex justement:

[^0-9()+-/*]

Bon je suis plus sûr, il y a des chances que ça soit
[^0-9\(\)\+\-/\*]



-Il a pas l'air terrible !
-Faut pas s'y fier, car personne n'en est ressorti ! [...]Faut dire aussi que personne y est entré

Répondre à teebo

4

lami20j, le 1 sep 2006 à 14:28:17

Salut,

[^0-9()+-/*]

Pour qu'un tiret soit inclut dans une regex en tant que caractère il faut le positionner au début, ou à la fin ou il faut l'antislasher et ça puisque dans une classe de caractère le tiret signifie un intervalle.

En revanche dans la 2ème regex tu as bien utilisé \- ;)

On pourrra simplifier un peu [^0-9\(\)\+\-/\*]

[^-\d\(\)+*]
lami20j

P.S. Pour le + et * pas besoin d'antislasher à l'intérieur d'une classe de caractère, pour les paranthèses je ne suis pas sûr, il faut tester, comme ça on evite d'avoir taper des caractères qu'on n'as pas besoin

Répondre à lami20j

5

Nico, le 1 sep 2006 à 14:51:33

Super,
j'utilise l'expression "[^0-9()+-/*]" est ça fait ce que je veux.
Merci à tous !!!! et A+

Répondre à Nico

6

Xavier, le 1 sep 2006 à 18:07:50

Bonjour !

Et désolé si je suis un peu hors sujet, mais vu qu'une réponse a été apportée, je me permets ^^'
Tout ça pour dire, que je ne pouvais pas laisser passer ça : quand on est "résolument francophone", on ne dit pas "expression régulière", qui est une mauvaise traduction de "regular expression", mais "expression rationnelle" !!

Voilà, désolé pour la disgression...

Xavier

Répondre à Xavier

8

 Armojax, le 1 sep 2006 à 20:22:53

Et un p'tit grain de sel...

Voilà, désolé pour la disgression...


Tout ça pour dire, que je ne pouvais pas laisser passer ça : quand on est "résolument francophone", on ne dit pas "disgression", mais digression...

Répondre à Armojax

7

lami20j, le 1 sep 2006 à 18:41:53

Bonjour Xavier,

désolé pour la disgression...

Rien de grave, en revanche ça c'est grave

que je ne pouvais pas laisser passer ça : quand on est "résolument francophone", on ne dit pas "expression régulière", qui est une mauvaise traduction de "regular expression", mais "expression rationnelle" !!


Moi non plus je ne pouvais pas laisser passer ça ;)


Et pourquoi c'est grave? Puisque on est dans le monde d'OpenSource, etc... et il y a toujours plusieurs points de vue, et pour toute chose il y a des adepts pour et contre.

Donc ce que tu dis c'est vrai mais pas pour tout le monde (par exemple pour Laurent Dami, celui qui a traduit l'execellent livre - on peut dire la Bible, Maitrîse des Expressions Régulières de Jeffrey E.F. Friedl

Je cite un sous chapitre entier pour ça :

Expressions régulières ou rationnelles?

"En vertu des principes énoncés plus haut, j'ai préféré régulières à rationnelles. Je suis conscient que depuis plusieurs dizaines d'années toute école française a utilisé le terme rationnelles, et que certains défendent aujourd'hui encore avec vigueur cette traduction, comme une sorte d'étendard de la tradition rationnelle française contre l'imperialisme anglophone. Cependant les expressions en question n'ont pas grand-chose à voir avec la raison!

Il est vrai que d'un point de vue mathématique elles ont une certaine parenté avec les nombres que l'on nomme rationnels, qui se traduisent également par rational numbers en anglais. Dans cette logique-là, il aurait peut-être fallu effectivement parler de rational expressions...mais la traduction anglophone n'en a pas voulu ainsi, préférant mettre en avant l'aspect pratique (expressions gouvernées par des règles) plutôt que la cohérence mathématique. Les deux positions sont en principe défendables, mais aujourd'hui la seconde a clairement le dessus: une recherche dans les principaux moteurs d'indexation WEB montre que même dans le monde francophone les pages contenant expressions régulières sont quatre fois plus nombreuses que celles contenant expressions rationnelles.

Ainsi, pour éviter de prendre le lecteur en otage dans des querelles d'école, et pour lui éviter d'inutiles confusions lorsqu'il lira des manuels ou des magazines anglophones, j'ai privilégié le terme régulières."

Par Jeffrey E.F. Friedl - Traduction par Laurent Dami - Edition O'Reilly - 2003


Google

Résultats 1 - 10 sur un total d'environ 3 730 000 pour expressions régulières

et

Résultats 1 - 10 sur un total d'environ 305 000 pour expressions rationnelles.

lami20j

Répondre à lami20j
Collection CommentÇaMarche.net