je dois filer à php une uri contenant (en brut sans encodage) :
...&infos=à l'adresse&...
pour cela j'ai trouvé sur :
<http://phpjs.org/functions/rawurlencode:501>
un script simple :
function rawurlencode(str) {
str=(str + '').toString();
return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g,
'%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g,
'%2A');
}
malheureusement avec le couple js/rawurlencode et php/urldecode,
a string "à l'adresse" est transformée en :
à l\'adresse <<<< backslash devant le single quote "'"
___^________
les différentes étapes d'encodage/décodage :
coôté JS :
"à l'adresse" (brut non encodé) ;
"%C3%A0%20l'adresse" (encodé par encodeURIComponent(string)) ;
"%C3%A0%20l%27adresse" (encodé par rawurlencode(string)) ; ("'" -> %27)
côté PHP :
je transmets, pour essai, deux strings, l'une correspondant à
"encodeURIComponent(string)" et l'autre à "rawurlencode(string)".
et j'obtiens, pour "encodeURIComponent(string)" :
"à l\'adresse" (avant décodage) ;
"à l\'adresse" (après décodage par "urldecode(string)") ;
et pour "rawurlencode(string)" :
"à l\'adresse" (avant décodage) ;
"à l\'adresse" (après décodage par "urldecode(string)") ;
soit tjs la même chose...
notez que la string "à l\'adresse" a été copiée d'un butineur mais,
comme j'enregistre ça dans une bd, j'ai pu vérifier que j'ai la même
chose dans la bd.
Conclusion, je ne vois pas du tout d'où provient la transfo :
"'" -o-> "\'"
génante....
Notez qui si j'utilise, côté PHP, rawurldecode au lieu de urldecode,
j'ai le MÊME résultat !!!
--
« Le temps est un grand maitre, dit-on. Le malheur est
qu'il tue ses élèves. »
(Berlioz)
il y a donc un décodage builtin, de qui ? le butineur ou PHP ??? ce qui rendrait urldecode inutile...
j'ai trouvé une solution : preg_replace("/'/", "'", $string);
mais bon, j'aimerais bien comprendre ce qui se passe...
-- « Le temps est un grand maitre, dit-on. Le malheur est qu'il tue ses élèves. » (Berlioz)
unbewusst.sein
Une Bévue wrote:
il y a donc un décodage builtin, de qui ? le butineur ou PHP ??? ce qui rendrait urldecode inutile...
effectivement si je compare les URLs transmises, je n'ai pas la même chose ...
la string en entrée : "à l'adresse" telle quelle donc avec des doubles quotes, j'obtiens : http://localhost/landp_mvc/php/quote_test.php?infos_std=%22%C3%A0%20l%27 adresse%22&infos_nstd=%22%C3%A0%20l%27adresse%22 avec Firefox nightly
et : http://imac6/landp_mvc/php/quote_test.php?infos_std=%22à%20l'adresse%22& infos_nstd=%22à%20l%27adresse%22 avec Safari
ou encore : http://localhost/landp_mvc/php/quote_test.php?infos_std=%22%C3%A0%20l'ad resse%22&infos_nstd=%22%C3%A0%20l%27adresse%22 avec Chrome
et enfin : http://imac6/landp_mvc/php/quote_test.php?infos_std=%22%C3%A0%20l'adress e%22&infos_nstd=%22%C3%A0%20l%27adresse%22 avec Opera Next
donc JE DOIS m'arranger pour que ça devienne indépendant du butineur... -- « Le temps est un grand maitre, dit-on. Le malheur est qu'il tue ses élèves. » (Berlioz)
Une Bévue <unbewusst.sein@fai.invalid> wrote:
il y a donc un décodage builtin, de qui ? le butineur ou PHP ???
ce qui rendrait urldecode inutile...
effectivement si je compare les URLs transmises, je n'ai pas la même
chose ...
la string en entrée : "à l'adresse" telle quelle donc avec des doubles
quotes, j'obtiens :
http://localhost/landp_mvc/php/quote_test.php?infos_std=%22%C3%A0%20l%27
adresse%22&infos_nstd=%22%C3%A0%20l%27adresse%22
avec Firefox nightly
et :
http://imac6/landp_mvc/php/quote_test.php?infos_std=%22à%20l'adresse%22&
infos_nstd=%22à%20l%27adresse%22
avec Safari
ou encore :
http://localhost/landp_mvc/php/quote_test.php?infos_std=%22%C3%A0%20l'ad
resse%22&infos_nstd=%22%C3%A0%20l%27adresse%22
avec Chrome
et enfin :
http://imac6/landp_mvc/php/quote_test.php?infos_std=%22%C3%A0%20l'adress
e%22&infos_nstd=%22%C3%A0%20l%27adresse%22
avec Opera Next
donc JE DOIS m'arranger pour que ça devienne indépendant du butineur...
--
« Le temps est un grand maitre, dit-on. Le malheur est
qu'il tue ses élèves. »
(Berlioz)
il y a donc un décodage builtin, de qui ? le butineur ou PHP ??? ce qui rendrait urldecode inutile...
effectivement si je compare les URLs transmises, je n'ai pas la même chose ...
la string en entrée : "à l'adresse" telle quelle donc avec des doubles quotes, j'obtiens : http://localhost/landp_mvc/php/quote_test.php?infos_std=%22%C3%A0%20l%27 adresse%22&infos_nstd=%22%C3%A0%20l%27adresse%22 avec Firefox nightly
et : http://imac6/landp_mvc/php/quote_test.php?infos_std=%22à%20l'adresse%22& infos_nstd=%22à%20l%27adresse%22 avec Safari
ou encore : http://localhost/landp_mvc/php/quote_test.php?infos_std=%22%C3%A0%20l'ad resse%22&infos_nstd=%22%C3%A0%20l%27adresse%22 avec Chrome
et enfin : http://imac6/landp_mvc/php/quote_test.php?infos_std=%22%C3%A0%20l'adress e%22&infos_nstd=%22%C3%A0%20l%27adresse%22 avec Opera Next
donc JE DOIS m'arranger pour que ça devienne indépendant du butineur... -- « Le temps est un grand maitre, dit-on. Le malheur est qu'il tue ses élèves. » (Berlioz)