Comment puis-je éviter la double codage d'URL lors du rendu d'Url de mon site web?
Les utilisateurs fournissent les deux échappées Url premières et de l'Url de mon site, la saisie de texte; par exemple, je considère que ces deux Url équivalent:
https://www.cool.com/cool%20beans
https://www.cool.com/cool beans
Maintenant, je veux rendre ces que <a>
balises plus tard, lors de la visualisation de ces données. Je suis coincé entre le codage du texte donné et d'obtenir ces liens:
<a href="https://www.cool.com/cool%2520beans"> <!-- This one is broken! -->
<a href="https://www.cool.com/cool%20beans">
Ou non codant, et ce:
<a href="https://www.cool.com/cool%20beans">
<a href="https://www.cool.com/cool beans"> <!-- This one is broken! -->
Quelle est la meilleure façon de se sortir d'un point de vue de l'expérience utilisateur avec les navigateurs modernes? Je suis déchiré entre faire un décodage de passer au-dessus de leur entrée ou de la deuxième option que j'ai énumérés ci-dessus, où nous n'avons pas coder le href
attribut.
- Vous pouvez bien sûr utiliser un serveur de script côté pour vérifier si l'url affichée est codée ou non, puis l'encoder en cas de besoin.
Vous devez vous connecter pour publier un commentaire.
Si vous voulez éviter la double codage les liens que vous pouvez simplement utiliser
urldecode()
sur les deux liens, et puisurlencode()
par la suite, que le décodage d'une URL de la forme "https://www.cool.com/cool haricots" renvoie la même valeur, alors que le décodage "https://www.cool.com/cool%20beans" serait de retour avec l'espace. Cela laisse deux liens gratuit pour être correctement codés.Sinon, les caractères codés pourrait être numérisés à l'aide de
strpos()
fonction, par exempleIdéalement, pour cela, une matrice de la commune de caractères codés serait balayé pour, à la place de "%20"