J'ai une URL comme lorsque je l'écris au fichier p> mais j'ai besoin de l'écrire à sans encodage < / p> Comment puis-je faire? p> merci p> p> p>
3 Réponses :
parce que le _ get _ obtenez code> et _ Demande code> Les superglobaux sont automatiquement exécutés à une fonction de décodage (équivalent à urldecode () code>), vous simplement besoin de réaménager (code> urlencode () code> les données pour la faire correspondre aux caractères passés dans la chaîne d'URL: file_put_contents('x.txt', urlencode($_GET['x'])); // -->hello+world
file_put_contents('y.txt', urlencode($_GET['y'])); // -->%00h%00e%00l%00l%00o
Ca ne fonctionne pas. Il retourne x -> Hello + World, Y ->% 5C0H% 5C0E% 5C0L% 5C0L% 5C0O
@ user1725661 - alors quelque chose d'autre se passe. Je viens de tester cela et ça marche bien ... Voir ma réponse étendue.
Je pense que vous pouvez utiliser urlencode () code> pour transmettre la valeur dans URL et urldecode () code> pour obtenir la valeur. P>
Ca ne fonctionne pas. Il retourne x -> Hello + World, Y ->% 5C0H% 5C0E% 5C0L% 5C0L% 5C0O
Vous pouvez obtenir des valeurs non connectées à partir de la variable $ _server ["Query_string"].
function getNonDecodedParameters() {
$a = array();
foreach (explode ("&", $_SERVER["QUERY_STRING"]) as $q) {
$p = explode ('=', $q, 2);
$a[$p[0]] = isset ($p[1]) ? $p[1] : '';
}
return $a;
}
$input = getNonDecodedParameters();
file_put_contents('x.txt', $input['x']);
C'est la bonne réponse, car la ré-codage suggérée par Ben D. traite des caractères (comme des barres obliques) différemment.