Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[1/2HS] preg_match php

1 réponse
Avatar
ajh-valmer
Bonjour,

Je souhaite autoriser ces caractères :

^ 0 Í  9 , + - * / .

if (preg_match("#[^^\-9*+-/().$]#", $v)) {
....

Ça ne marche pas :
l'accent circonflexe (^) marque le début d'une chaÍ®ne,
et se confond avec l'accent ^ autorisé

Comment présenter la bonne syntaxe de preg_match pour le faire ?

Merci,

André Valmer

1 réponse

Avatar
Daniel Caillibaud
Le 02/02/21 Í  14:47, "ajh-valmer" a écrit :
Bonjour,
Je souhaite autoriser ces caractères :
^ 0 Í  9 , + - * / .
if (preg_match("#[^^-9*+-/().$]#", $v)) {
....
Ça ne marche pas :
l'accent circonflexe (^) marque le début d'une chaÍ®ne,
et se confond avec l'accent ^ autorisé

À l'intérieur de crochets, tu dois échapper tous les caractères qui ont une signification dans
ce contexte, ^ - et ] (je crois pas qu'il y en ait d'autres)
^ signifie le début de la chaÍ®ne hors des crochets, une négation si premier caractère entre
crochets.
Comment présenter la bonne syntaxe de preg_match pour le faire ?

Je connais plus trop php mais je dirais
if (preg_match("#^[^0-9+-*/().]+$#", $v)) {
que tu dois pouvoir écrire
if (preg_match("#^[0-9^+*/().-]+$#", $v)) {
(pas besoin d'échapper le ^ s'il n'est pas en premier dans les crochets, ni le - s'il est en
dernier)
--
Daniel
La théorie est absurde dans la pratique
et la pratique est aveugle sans la théorie.
Kant