Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Remplacer & dans une URL

8 réponses
Avatar
Denis Beauregard
Bonjour,


J'ai écrit un logiciel qui génère des pages web à partir d'un
fichier Excel enregistré en texte tabulé. Il se trouve que
j'utilise l'éperluette & comme indicateur de commentaire, afin
de ne pas afficher certaines informations que je réserve à un
usage interne.

Il se trouve que parfois, l'information à afficher est une URL.
Par exemple, http://radiointensite.free.fr/articles.php?lng=fr&pg=478
renvoie à l'article 478 du site en question et j'ai donc un lien
que l'utilisateur peut recopier dans son navigateur.

Mais, il y a une éperluette sur la ligne et l'utilisateur ne voit que
http://radiointensite.free.fr/articles.php?lng=fr qui n'est pas
l'URL complète et le lien est donc coupé. De plus, il y a parfois
une 2e information plus loin et elle est aussi coupée.

Comment remplacer le caractère & pour qu'un navigateur puisse lire
le lien sans qu'il n'y ait de & dans l'URL ? J'ai essayé %26
(puisque & est 26 en hexa) mais cela ne donne rien et
http://radiointensite.free.fr/articles.php?lng=fr%26pg=478
est invalide.

À part détecter le %26 lorsque je génère le code HTML, y a-t-il une
solution simple ?

Dire que je n'ai que 3 URL à recoder sur les 60 000 pages de
données !


Denis

8 réponses

Avatar
Olivier Miakinen
Bonjour,

Le 26/10/2009 22:49, Denis Beauregard a écrit :

J'ai écrit un logiciel qui génère des pages web à partir d'un
fichier Excel enregistré en texte tabulé. Il se trouve que
j'utilise l'éperluette & comme indicateur de commentaire [...]



Mauvaise pioche...

[...]

Comment remplacer le caractère & pour qu'un navigateur puisse lire
le lien sans qu'il n'y ait de & dans l'URL ? J'ai essayé %26
(puisque & est 26 en hexa) mais cela ne donne rien et
http://radiointensite.free.fr/articles.php?lng=fr%26pgG8
est invalide.



Tu voudrais donc un moyen pour que le caractère & soit transmis sans
être transmis, et qu'automagiquement on retrouve le & avant de passer le
contrôle à PHP... Bien sûr, le %26 ne peut pas fonctionner puisque cette
méthode permet justement de retirer son caractère spécial au &, chose
que tu veux éviter.

À part détecter le %26 lorsque je génère le code HTML, y a-t-il une
solution simple ?



Une réécriture d'URL ? Cf. mod_rewrite, RewriteRule, et bien sûr le
groupe fr.comp.infosystemes.www.serveurs.

Cordialement,
--
Olivier Miakinen
Avatar
Patrick Mevzek
Le Mon, 26 Oct 2009 16:49:06 -0500, Denis Beauregard a écrit:
J'ai écrit un logiciel qui génère des pages web à partir d'un fichier
Excel enregistré en texte tabulé. Il se trouve que j'utilise
l'éperluette & comme indicateur de commentaire, afin de ne pas afficher
certaines informations que je réserve à un usage interne.



Comme l'a dit Olivier, vous avez vraiment mal choisi...
Tant sur la forme (le caractère spécial en lui-même) que le fond (la
séparation des données entre un lien et un commentaore).

Comment remplacer le caractère & pour qu'un navigateur puisse lire le
lien sans qu'il n'y ait de & dans l'URL ?



Normalement si vous utilisez ; à la place de & cela doit fonctionner, en
tout cas c'est recommandé par le W3C :
http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2
pour les raisons évidentes des surchages de sens du & en HTML/SGML/XML/
XHTML

Je sais que cela fonctionne avec certains frameworks mais il faudra
vérifier avec le(s) site(s) distant(s) pour lesquels vous avez des liens.

--
Patrick Mevzek . . . . . . . . . . . . . . Dot and Co
<http://www.dotandco.net/> <http://www.dotandco.com/>
<http://www.dotandco.net/ressources/icann_registrars/prices>
<http://icann-registrars-life.dotandco.net/>
Avatar
Patrick Mevzek
Le Mon, 26 Oct 2009 23:34:41 -0500, Denis Beauregard a écrit:
Normalement si vous utilisez ; à la place de & cela doit fonctionner, en
tout cas c'est recommandé par le W3C :
http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2 pour les raisons
évidentes des surchages de sens du & en HTML/SGML/XML/ XHTML

Je sais que cela fonctionne avec certains frameworks mais il faudra
vérifier avec le(s) site(s) distant(s) pour lesquels vous avez des
liens.



J'ai fait l'essai avec une des URL et cela donnait une erreur 404.



Pour PHP, ca doit se configurer, cf
http://fr2.php.net/manual/en/ini.core.php
option arg_separator.input
(c'est par défaut juste & et pas & plus ;)

--
Patrick Mevzek . . . . . . . . . . . . . . Dot and Co
<http://www.dotandco.net/> <http://www.dotandco.com/>
<http://www.dotandco.net/ressources/icann_registrars/prices>
<http://icann-registrars-life.dotandco.net/>
Avatar
Denis Beauregard
Le Tue, 27 Oct 2009 00:44:37 +0100, Olivier Miakinen
<om+ écrivait dans fr.comp.infosystemes.www.auteurs:

Bonjour,

Le 26/10/2009 22:49, Denis Beauregard a écrit :

J'ai écrit un logiciel qui génère des pages web à partir d'un
fichier Excel enregistré en texte tabulé. Il se trouve que
j'utilise l'éperluette & comme indicateur de commentaire [...]



Mauvaise pioche...



Il me fallait quelque chose de peu utilisé, compatible avec mes
données et que je puisse saisir facilement avec Excel et
Open Office. Je suppose que les autres caractères auraient aussi
leurs inconvénients et c'est trop aléatoire de remplacer les &
aujourd'hui car il y a 62 000 enregistrements avec ce &.

[...]

Comment remplacer le caractère & pour qu'un navigateur puisse lire
le lien sans qu'il n'y ait de & dans l'URL ? J'ai essayé %26
(puisque & est 26 en hexa) mais cela ne donne rien et
http://radiointensite.free.fr/articles.php?lng=fr%26pgG8
est invalide.



Tu voudrais donc un moyen pour que le caractère & soit transmis sans
être transmis, et qu'automagiquement on retrouve le & avant de passer le
contrôle à PHP... Bien sûr, le %26 ne peut pas fonctionner puisque cette
méthode permet justement de retirer son caractère spécial au &, chose
que tu veux éviter.



En fait, je pensais que c'était le navigateur qui faisait la
conversion, ou peut-être Apache.

À part détecter le %26 lorsque je génère le code HTML, y a-t-il une
solution simple ?



Une réécriture d'URL ? Cf. mod_rewrite, RewriteRule, et bien sûr le
groupe fr.comp.infosystemes.www.serveurs.



Je voudrais que mon produit final soit indépendant de mon site, donc
que l'URL soit utilisable tel quel.

Pour le moment, j'ai ajouté un : en début de ligne pour dire de ne pas
couper après le &. Avec un peu de chance, cela n'aura pas d'effet
secondaire et je m'en rappellerai lors des prochaines mises à jour
(2 ou 3 par année, et ce n'est qu'au moment de la mise à jour que je
vérifie certaines informations, mais pas l'URL jusqu'à présent).

Merci pour les commentaires.


Denis
Avatar
Denis Beauregard
Le 27 Oct 2009 00:41:19 GMT, Patrick Mevzek
écrivait dans
fr.comp.infosystemes.www.auteurs:

Le Mon, 26 Oct 2009 16:49:06 -0500, Denis Beauregard a écrit:
J'ai écrit un logiciel qui génère des pages web à partir d'un fichier
Excel enregistré en texte tabulé. Il se trouve que j'utilise
l'éperluette & comme indicateur de commentaire, afin de ne pas afficher
certaines informations que je réserve à un usage interne.



Comme l'a dit Olivier, vous avez vraiment mal choisi...



Et il est trop tard pour essayer autre chose. J'ai peur d'avoir des
effets non-désirés si je remplace tous les & par autre chose. J'ai
plus de 62 000 enregistrements avec & (j'ai recherché toutes les
lignes ayant & avec un FIND de DOS). Je dois dire que je garde un
certain nombre de données brutes même si elles sont intégrées
ailleurs, ceci pour éventuellement retomber sur la donnée initiale,
et j'ai utilisé des & pour marquer ces données !!!

Tant sur la forme (le caractère spécial en lui-même) que le fond (la
séparation des données entre un lien et un commentaore).



La ligne est la source de l'information. Il y a, en ce moment,
277 000 sources d'information, dont une dizaine seulement ont des
URL avec un & (je pense que cela donne 3 URL différents). Ces
sources sont le plus souvent un titre, un nom de personne,
d'organisme ou de publication.

Comment remplacer le caractère & pour qu'un navigateur puisse lire le
lien sans qu'il n'y ait de & dans l'URL ?



Normalement si vous utilisez ; à la place de & cela doit fonctionner, en
tout cas c'est recommandé par le W3C :
http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2
pour les raisons évidentes des surchages de sens du & en HTML/SGML/XML/
XHTML

Je sais que cela fonctionne avec certains frameworks mais il faudra
vérifier avec le(s) site(s) distant(s) pour lesquels vous avez des liens.



J'ai fait l'essai avec une des URL et cela donnait une erreur 404.
Donc, je ne peux pas utiliser cette méthode. J'essaie autre chose,
en souhaitant qu'il n'y ait pas d'effet secondaire.


Merci pour les commentaires.


Denis
Avatar
Denis Beauregard
Le 27 Oct 2009 03:38:17 GMT, Patrick Mevzek
écrivait dans
fr.comp.infosystemes.www.auteurs:

Le Mon, 26 Oct 2009 23:34:41 -0500, Denis Beauregard a écrit:
Normalement si vous utilisez ; à la place de & cela doit fonctionner, en
tout cas c'est recommandé par le W3C :
http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2 pour les raisons
évidentes des surchages de sens du & en HTML/SGML/XML/ XHTML

Je sais que cela fonctionne avec certains frameworks mais il faudra
vérifier avec le(s) site(s) distant(s) pour lesquels vous avez des
liens.



J'ai fait l'essai avec une des URL et cela donnait une erreur 404.



Pour PHP, ca doit se configurer, cf
http://fr2.php.net/manual/en/ini.core.php
option arg_separator.input
(c'est par défaut juste & et pas & plus ;)



Ce sont des pages que je cite. Je n'ai pas accès aux serveurs
utilisés...


Denis
Avatar
Pierre Goiffon
Denis Beauregard wrote:
J'ai écrit un logiciel qui génère des pages web à partir d'un
fichier Excel enregistré en texte tabulé. Il se trouve que
j'utilise l'éperluette & comme indicateur de commentaire [...]


Mauvaise pioche...



Il me fallait quelque chose de peu utilisé, compatible avec mes
données et que je puisse saisir facilement avec Excel et
Open Office. Je suppose que les autres caractères auraient aussi
leurs inconvénients et c'est trop aléatoire de remplacer les &
aujourd'hui car il y a 62 000 enregistrements avec ce &.


(...)
Pour le moment, j'ai ajouté un : en début de ligne pour dire de ne pas
couper après le &. Avec un peu de chance, cela n'aura pas d'effet
secondaire et je m'en rappellerai lors des prochaines mises à jour



Hahum, plutôt que se rabattre sur un "avec un peu de chance", il aurait
fallu consulter les spécifications du standard. Je pense que la RFC sur
HTTP aurait été un bon début ?? Mais apparemment maintenant c'est un peu
tard... Bon courage...
Avatar
Olivier Miakinen
Le 27/10/2009 05:26, Denis Beauregard a écrit :

Mauvaise pioche...



Il me fallait quelque chose de peu utilisé, compatible avec mes
données et que je puisse saisir facilement avec Excel et
Open Office. Je suppose que les autres caractères auraient aussi
leurs inconvénients et c'est trop aléatoire de remplacer les &
aujourd'hui car il y a 62 000 enregistrements avec ce &.



La moindre des choses, quand on attribue à rôle spécial à un caractère,
c'est de prévoir *dès le départ* comment lui retirer ce rôle spécial.

Un moyen possible, par exemple, consiste à doubler le caractère. Ainsi,
un caractère & sera un indicateur de commentaire pourvu qu'il ne soit
pas suivi par un autre & (le plus simple est de prendre « & + espace »)
alors que la séquence && sera traduite en un seul &.

Une autre possibilité consiste à choisir un autre caractère pour
l'échappement du rôle spécial, par exemple , et c'est cet autre
caractère qui sera doublé s'il y a besoin de l'envoyer tel quel.

Ainsi, si je prends la ligne suivante :
http://example.com/article?lang=fr&ref=U12E9 & Commentaire

Dans le premier cas elle donnera :
http://example.com/article?lang=fr&&ref=U12E9 & Commentaire

Et dans le second cas :
http://example.com/article?lang=fr&ref=U12E9 & Commentaire

À toi de voir !