détecter tous les espaces

WRInaute passionné
Cela fait un bout de temps que j'essaye de coder une fonction qui détecte tous les caractères spéciaux d'un texte saisi pour les remplacer par des caractères compatibles avec une url.

Je bloque sur le problème des espaces qui ne sont pas systèmatiquement détectés et donc non remplacés, ce qui génère des url de type : "mon mot.html" au lieu de "mon-mot.html" ..

Je suppose que cela provient d'internautes utilisant ms word + IE et que je subis donc le codage des caractères exotique de microsoft.

J'ai pourtant essayé de lister les différents codes possibles pour les espaces que j'ai trouvé sur le web mais il doit m'en manquer...

Comme je suppose que je ne suis pas le premier à rencontrer le problème, je souhaite savoir si certains ont trouvé une solution ? ou possède une liste exhaustive des différentes codes (ascii, ansi...) possibles pour les espaces ?
 
WRInaute accro
Je suppose que quelqu'un va t'apporter rapidement une solution.
Le code de n'importe quel caractère en n'importe quelle langue, on peut le trouver ici
-http://www.macchiato.com/unicode/chart/
mais c'est plutôt galère et je te suggèrerais d'opter pour une solution non par reconnaissance mais par exclusion, du type
Si moi pas connaître, alors moi mettre _
par exemple.
Tout dépend du script que tu utilises.
 
WRInaute discret
Hello,
:idea: En utilisant les regexp tu peux arriver à remplacer tous les CNIs (caractères non indentifiés) par celui de ton choix.
Par contre si tu as par exemple "=20%" (qui ressemble à un code d'espace, si je ne m'abuse... mais çuilà tu dois l'avoir :wink: ) il te resteras le 20 (ie : -20-) à moins de remplacer également chiffres, ce qui n'est peut-être pas souhaitable :roll:

Ps: ça rejoint ce que dit Szarah, pendant que j'écris.
 
WRInaute passionné
Oui en fait, je voulais éviter les expresssions rationnelles qui sont gourmandes mais je vais peut-être m'y résoudre, au moins pour faire le nettoyage final de tout ce qui n'a pas été détecté et remplacé.

C'est la seule façon d'être certain du résultat.

C'est ce que semble faire google lui-même sur blogger.

Il n'y va d'ailleurs pas de main morte, les "é" sont par exemple supprimés au lieu d'être remplacés par des "e"...
 
WRInaute discret
En furetant un peu sur WRI, j'ai découvert ceci:
https://www.webrankinfo.com/forum/t/probleme-20-lie-aux-espaces.28667/

Il devrait y avoir au moins un lien qui t'intéressera, mais tu y trouveras sans doute plus, surtout si tu codes en php. Néanmoins dans certains exemples donnés en code, l'utilisation des regexp n'est pas du tout nécessaire, ahma.

Sinon, pour compléter ce que dit Szarah, il n'y a pas qu'une solution à ce problème, du moins tel que tu l'a posé. 8)
 
WRInaute discret
J'aime bien le terme "rationnelles" qui me parait plus pertinent, plus explicite et plus rationnel que "régulières". :)
Mais à présent cela fait trop longtemps que je les fréquente pour changer aussi facilement.

Quand tu parles de leur gourmandise, je supposes que tu ne fais pas allusion à celle des parenthèses capturantes mais bien à leur consomation de ressources. Mais le premier cas ne devrait néanmoins pas te poser problème si tu cherches à remplacer les codages exotiques de manière générique (ie : =%XX où XX sont des alphanumériques)
 
WRInaute passionné
Je viens d'ajouter une expression utilisant la classe "[[:space:]]" pour virer tous les espaces restants et même en local je sens que l'enregistrement est ralenti !

Enfin, je vais attendre les prochaines mises à jour de mes utilisateurs qui me posent généralement problème pour voir si au moins c'est efficace.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut