Bonjour,

J'ai un problème avec un lien dont la variable récupérée par un GET dans la page de destination contient un point d'interrogation.

J'ai essayé avec un str_replace de remplacer le ? par un autre symbole sur la page du lien, puis avec la même fonction de le remettre sur la page destination après la récupération GET mais avant la requête SQL.

C'est mieux, je n'ai plus d'erreur 404 mais ma page est vide. Smiley decu

Merci pour votre aide.
Salut,

En encodant le point d'interrogation...

En javascript, à l'aide de encodeURIComponent
var str = 'Quoi ?';
var url = 'http://www.exemple.com/?' + encodeURIComponent(str);


En PHP, à l'aide de rawurlencode
$str = 'Quoi ?';
$url  = 'http://www.exemple.com/?' . rawurlencode($str);
Merci.

Mais si j'ai bien compris, je réencode pour rendre compatible le ? avec l'URL mais ma fonction GET va récupérer cette variable réencodée pour la comparer avec la condition WHERE de ma requête.

Et forcément, ça va pas corresponde. Il faudrait pas décoder après le GET ?
Je le pensais aussi au début...

J'utilisais donc la fonction rawurldecode pour le decodage :
$var=isset($_GET['var'])?rawurldecode($_GET['var']):'';

mais en vérité PHP les décode automatiquement. Donc le code ci-dessous suffit :
$var=isset($_GET['var'])?$_GET['var']:'';


D'ailleurs à ce propos et pour information : dans la documentation de la fonction PHP urldecode, il est noté :
php a écrit :
Avertissement :
Les superglobales $_GET et $_REQUEST sont déjà décodées. Utiliser urldecode() sur un élément de $_GET ou $_REQUEST peut avoir des conséquences inattendues et dangereuses.