|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Webmaster Inscription : novembre 2008 Messages : 14 ![]() |
Bonjour à tous,
C'est vraiment en cas d'extrême limite que je me résous à poster dans un forum, la plupart du temps en parcourant internet je trouve les réponse à mes questions. Mais là, non, je sais pas pourquoi Trève de blabla, voici mon problème : J'ai un formulaire, tout bête, avec entre autre deux champs texte, tout bête eux aussi : Code :
Lorsque j'écris par exemple "J'adore les patates J'ai essayé de nombreux pattern et fonctions en Javascript (j'utilise jQuery), avec quelque chose qui ressemble à ça et qui fonctionne relativement bien : Code :
Voila, j'espère avoir été assez clair, je continue à chercher de mon côté. A très vite, et surtout, merci !! |
||||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Pour simplifier, à ta place je procèderais en deux étapes :
* remplacement des caractères accentués et autres (en faisant une recherche, il y a eu récemment diverses solutions de données à ce sujet) ; * remplacement de tout les caractères indésirés restant Code :
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
||
|
00
|
|
|
#3 | |||
|
Invité de passage
![]() Webmaster Inscription : novembre 2008 Messages : 14 ![]() |
Citation:
Encore merci à toi ! |
|||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Normalement, ça le fait déjà
![]() \W correspond à tout caractère non alphanumérique (donc autre que [a-z0-9]) et le + indique que ce caractère peut être présent plusieurs fois de suite.
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
00
|
|
|
#5 | ||||
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 451 ![]() |
Citation:
Citation:
Ecrite comme ça oui : /\W+/g. Ecrite comme ça /[\W+]/g par contre elle sélectionne le premier caractère non alpha-numérique ou le premier caractère "+" et ceci de façon globale dans la chaine. C'est donc cette regex là qu'il faut utiliser : /\W+/g. |
||||
|
|
10
|
|
|
#6 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
![]() C'est vrai que j'ai un peu dérapé sur le coup !
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Webmaster Inscription : novembre 2008 Messages : 14 ![]() |
Effectivement, ta regex Loceka est vraiment bien. J'aurai dû lire les docs sur le sujet, j'avoue que j'ai un peu
Donc, j'arrive à remplacer (plutôt : supprimer) les caractères non alphanumériques. C'est déjà pas mal, mais en appliquant une fonction avant ce replace, peut-être arriverai-je à modifier les caractères accentués en non accentués. Justement, je n'arrive pas à trouver de regex facilitant la chose. J'ai bien une idée, du genre :
Je continue à potasser le problème, et vous tiens au jus. Et encore merci à vous ! Edit : Je pense avoir trouvé une idée : Code :
Par exemple : Hé, c'est un beignet ! Plus qu'à supprimer le tiret de fin (faciiile !). Par contre, j'aimerai modifier l'étape 2, vraiment trop moche... Merci à vous, again |
||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 451 ![]() |
Comme l'a dit Bovino, il y'a plein de posts sur le forum Javascript de dvp qui parle de cette substitution de caractères accentués.
Mais de mémoire tous se résument à la même chose : prendre dans la table ascii chaque caractère accentué et faire la substitution à la main avec le caractère qui va bien. Il n'y a pas de fonction toute faite pour ça. |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Webmaster Inscription : novembre 2008 Messages : 14 ![]() |
J'imagine que c'est même mieux, il n'y a pas de problèmes avec ma technique vis-à-vis de l'encodage de caractères ? Je ne pense pas, mais je préfère être sûr. C'est-à-dire : ma page et mes données SQL sont encodées en utf-8, tout va bien de ce côté-là, mais est-ce que le client peut avoir un navigateur qui envoie des POST dans un autre encodage ?
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Matilin TorreÉtudiant Inscription : juin 2010 Messages : 679 ![]() |
Pour les accents, je ressors ceci. On s'était bien éclatés ce jour-là
Pour l'encodage, maintenant que tu le dis, j'ai un petit doute. A priori, tu as déjà tout réglé en UTF8 donc tu ne devrais pas avoir de problèmes. Mais là, je me pose la question : que se passe-t-il si l'utilisateur change volontairement la détection d'encodage de son navigateur ? Je vais faire des tests. Edit: voir plus bas.
__________________
Disposition de clavier ergonomique française : Bépo |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Webmaster Inscription : novembre 2008 Messages : 14 ![]() |
J'attends tes résultats avec impatience
|
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Matilin TorreÉtudiant Inscription : juin 2010 Messages : 679 ![]() |
C'est évident en fait, j'avais oublié
Les données de formulaires sont transmises dans le format application/x-www-form-urlencoded qui repose sur l'ASCII simple. Tous les caractères « sensibles » sont convertis en %xx, par exemple %20 pour l'espace. (En réalité il s'agit du code ASCII en hexa, et on peut l'obtenir avec encodeURIComponent.) Conclusion : si le charset de la page est bien déclaré, aucun problème avec le formulaire !
__________________
Disposition de clavier ergonomique française : Bépo |
|
|
00
|
|
|
#13 | ||
|
Invité de passage
![]() Webmaster Inscription : novembre 2008 Messages : 14 ![]() |
Eh oui, maintenant que tu le dis, c'est bien ça... Aucun problème d'encodage, c'est parfait, je suis bien content.
Histoire de terminer, au cas où ça peut intéresser d'éventuels développeurs, le code que j'ai trouvé et qui marche pas trop mal : Code :
En tous cas, merci à vous tous pour vos précieux conseils ! See you later |
||
|
|
00
|
|
|
#14 | ||||
|
Membre Expert
![]() Matilin TorreÉtudiant Inscription : juin 2010 Messages : 679 ![]() |
Compare simplement le dernier caractère de url au lieu d'utiliser lastIndexOf. Sinon, si ta chaîne ne contient pas de tiret, elle sera parcourue en entier pour rien…
Code :
Code :
Code :
url = url. … .replace(/[ç]/g,"c").replace(/\W+$/g, '').replace(/\W+/g, '-'); Code :
url = url. … .replace(/[ç]/g,"c").replace(/\W+/g, '-').replace(/-$/, '');
__________________
Disposition de clavier ergonomique française : Bépo |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com