Problème regex
- Accueil
- Forum
- Programmation
- PHP
- Problème regex
Sowly Le 10 décembre 2017 à 04:56 (Édité le 25 janvier 2019 à 17:54)
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
Balatharas Le 14 décembre 2017 à 14:43 (Édité le 14 décembre 2017 à 14:44)
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
Profil introuvable Le 12 janvier 2018 à 23:25 (Édité le 1 janvier 1970 à 01:00)