[PHP] Regex strict (sans accents ni caractères spéciaux)
Résolu
NoSpe
-
Stanislas Poisson Messages postés 424 Date d'inscription Statut Membre Dernière intervention -
Stanislas Poisson Messages postés 424 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Regex caractères accentués
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
- Caracteres speciaux - Guide
- Exemple de mot de passe à 8 caractères - Guide
5 réponses
Salut,
<?php function teste($chaine) { $accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/","/å/", "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/"); $sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i", "u", "o", "o", "o", "o"); $chaine = preg_replace($accents, $sans,$chaine); $chaine = preg_replace('#[^A-Za-z0-9]#','',$chaine); return $chaine; } $toto = '#£$¤µ*%§!:;,@}=])°^¨_\'|-[({\'#"~&<>² <föù>dré£%}'; echo teste($toto);//retourne » foudre ?>
Merci d'avoir répondu.
En fait, je voulais que cela tienne sur 2-3 lignes plutôt qu'avoir à insérer un fonction.
Plus de précision: ma page où se place ma regex est une page de traitement_de_formulaire.php
Et je ne sais pas où placer le code si cette fonction est correcte (avant traitement et insertion en bdd ?)
Je suis débutant et je bidouille car je n'arrive pas à retenir tout ce qui concerne les regex ...
Si quelqu'un a ce même genre de code en Javascript, j'accepte aussi lol
D'autres avis ?
En fait, je voulais que cela tienne sur 2-3 lignes plutôt qu'avoir à insérer un fonction.
Plus de précision: ma page où se place ma regex est une page de traitement_de_formulaire.php
Et je ne sais pas où placer le code si cette fonction est correcte (avant traitement et insertion en bdd ?)
Je suis débutant et je bidouille car je n'arrive pas à retenir tout ce qui concerne les regex ...
Si quelqu'un a ce même genre de code en Javascript, j'accepte aussi lol
D'autres avis ?
La fonction vous la collez en haut de votre page "traitement_de_formulaire.php" puis ensuite vous traitez votre variable comme ceci :
$votre_variable = teste($votre_variable);
Regarde ca:
a adapter suivant ton cas bien entendu.
function make_alias($name){ $alias=mb_strtolower($name,'UTF-8'); $alias=mb_strtolower(trim($alias)); $search=array(utf8_decode('@[ÈÉÊËèéêë]@i'),utf8_decode('@[ÀÁÂÃÄÅàáâãäå]@i'),utf8_decode('@[ÌÍÎÏìíîï]@i'),utf8_decode('@[ÙÚÛÜùúûü]@i'),utf8_decode('@[ÒÓÔÕÖðòóôõö]@i'),utf8_decode('@[çÇ]@i'),utf8_decode('@[Ýýÿ]@i'),utf8_decode('@[,;:!§/.?*°+\'\-]@i'),utf8_decode('@[\s]@')); $replace=array('e','a','i','u','o','c','y','','-'); $alias=preg_replace($search,$replace,utf8_decode($alias)); $search=array('.',',','?',';',':','/','!','§','%','ù','*','µ','¨','^','$','£','ø','=','+','}',')','°',']','@','^','\\','|','[','{','#','~','}',']','&','²'); $alias=str_replace($search,'',$alias); $search=array('@-{2,}@i'); $alias=preg_replace($search,'-',$alias); $alias=utf8_encode($alias); return $alias; }
a adapter suivant ton cas bien entendu.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Merci pour vos réponses !
tryan44, ta fonction est parfaite, je t'en remercie !
Stanislas Poisson, je n'ai pas testé la tienne mais je l'aurais fait si je n'avais pas réussi à bien faire la méthode de tryan44.
Merci à vous deux.
Merci pour vos réponses !
tryan44, ta fonction est parfaite, je t'en remercie !
Stanislas Poisson, je n'ai pas testé la tienne mais je l'aurais fait si je n'avais pas réussi à bien faire la méthode de tryan44.
Merci à vous deux.
je te propose d'essayer aussi celle que je te propose, elle est tirée du même script mais a des éléments supplémentaires tel que la gestion des espaces multiples et la mise en place de tiret de séparation des mots (ainsi que le remplacement des tiret multiple :p et le tout placer en utf8 par defaut quelque soit le type d'entrée.
Sinon, pense a mettre ton post en résolu.
Sinon, pense a mettre ton post en résolu.