2009-06-10 8 views
2

je le bit de code suivant dans mon htaccess qui permettra à un utilisateur ID à seulement alphanumérique et comprennent des underscores et des traits d'union:besoin de modifier regex pour permettre des caractères spéciaux

RewriteRule ^([A-Za-z0-9_-]+)$ profile.php?ID=$1 [QSA,L] 

J'ai importé récemment plus de 1000 noms d'utilisateurs à partir d'une plate-forme de réseau social qui permettait aux noms d'utilisateur de contenir des caractères spéciaux, mais cette nouvelle plateforme pour laquelle j'ai migré les noms d'utilisateur ne le sera pas.

Comment pourrais-je modifier ce regex pour inclure les caractères spéciaux suivants:

[ ] = , ? & @ ~ { } + ' . * ! ™ ` (and spaces). 

Toute aide serait très apprécié.

+0

Tout le monde semble supposer que "caractère spécial" signifie "métacaractère regex", mais je ne suis pas si sûr. Il y a beaucoup de gens dans le monde à qui le «caractère spécial» signifie la ponctuation et les caractères d'espacement. Je suis à peu près sûr que c'est le cas ici. –

Répondre

3
RewriteRule ^([\[\]=,\?&@~\{\}\+'\.*!™`A-Za-z0-9_-]+)$ profile.php?ID=$1 [QSA,L] 

Assez explicite. Incluez juste tous les caractères, avec des échappements s'ils sont des caractères spéciaux regex.

+0

Ce n'est pas tout à fait correct - les classes de caractères ont une définition différente de ce qui sont des caractères spéciaux dans une classe par rapport à ce qui est spécial en dehors de lui - certains d'entre eux sont redondants. –

+0

Oui, redondant, mais toujours correct. Et plus facile de sortir de la classe si nécessaire. –

Questions connexes