Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: Personne...
Auteur Sujet: Problème regex

Sowly

Messages: 0

Bonjour je fais un topic sur ce forum car j'ai un petit problème,
je voudrais faire en sorte que tous les caractères spéciaux ne soient pas acceptés sauf certains, mon code fonctionne parfaitement il n'autorise que les :
a-z A-Z 0-9 : . _ - sauf un problème survient lorsqu'on insère un & il est lui aussi autorisé et je ne sais pas comment empêcher ceci, je vous mets mon bout de code si dessous :
<?php

$pseudonyme = $_GET['pseudonyme'];
if (!(preg_match("/[^A-Za-z0-9:._-]/", $pseudonyme)))
{
   echo 'ok';
}
else
{
   echo 'pas ok';
}

?>
Merci d'avance à ceux qui pourront m'aider

EDIT : Je pense avoir trouver le problème vu que c'est une requête GET mon code reconnait le & comme si je voulais lui donner un lien sous cette forme lien.com/api.php?pseudonyme=Sowly&mdp= donc je pense que pour voir mon système de preg_match je devrais le faire directement sur le site et non dans l'api avec une requête POST
Publicité

Balatharas

Messages: 613

Si tu veux interdire les & en plus des : . _ - <nombres>
Cette regex marche:
<?php
$pseudonyme = "Hello";

if(!preg_match('#(&)#', $pseudonyme, $matches1)) { // Cherche &
    if(!preg_match('#(\d+)#', $pseudonyme, $matches2)) { // Cherche un chiffre/nombre
        if(!preg_match('#(-)#', $pseudonyme, $matches3)) { // Cherche un tiret -
            if(!preg_match('#(_)#', $pseudonyme, $matches4)) { // Cherche underscore _
                if(!preg_match('#(:)#', $pseudonyme, $matches5)) { // Cherche :
                    if(!preg_match('#(\.)#', $pseudonyme, $matches6)) { // Cherche un point .
                        var_dump('Ya pas & ou un nombre ou - ou _ ou : ou .');
                    }
                }
            }
        }
    }
}
var_dump($matches1);
var_dump($matches2);
var_dump($matches3);
var_dump($matches4);
var_dump($matches5);
var_dump($matches6);
?>
Plus simplement, si toutes les variables $matches[1-6] affichent empty, alors on affiche var_dump('Ya pas.....');
Syntaxe preg_match(pattern, subject, matches)
matches affiche les trouvailles de pattern dans subject

Bernard-ng

Messages: 28

haha :D @Balatharas 

Bernard-ng

Messages: 28

'/^[a-zA-Z0-9:-_\.]+$/'  voila la regex


Vous devez vous connecter ou créer un compte pour poster une réponse