Encoder les caractères spéciaux lors de la définition des paramètres d'URL
P粉348915572
P粉348915572 2023-08-17 11:25:49
0
2
438
<p>Je dois définir certains paramètres d'URL, qui doivent également contenir un caractère spécial <code>$</code></p> <p>Actuellement, j'utilise <code>.set()</code> pour créer et définir les valeurs de ces paramètres : </p> <pre class="brush:php;toolbar:false;">const myUrl = new URL("http://www.example.com/??"); let params = new URLSearchParams(); params.set('$param1', '60'); params.set('$param2', '100');</pre> <p>Je sais que je dois utiliser <code>encodeURI()</code> pour m'assurer d'obtenir <code>$</code> dans l'URL et non <code>%24</ code> - Mais à quel stade dois-je faire cela ? </p> <p>Si je fais quelque chose comme ceci lors de la conversion des paramètres en chaînes et de leur ajout à l'URL, ils sont déjà convertis. </p> <pre class="brush:php;toolbar:false;">myUrl.search = encodeURI(params.toString()); // Sortie : http://www.example.com/?%24param1=60&%24param2=100 // Attente : http://www.example.com/?$param1=60&$param2=100</pre> <p><br /></p>
P粉348915572
P粉348915572

répondre à tous(2)
P粉147747637

Puisque vous en avez besoin et que votre serveur le prend en charge, corrigez-le simplement à la fin

const myUrl = new URL("http://www.example.com/?");

let params = myUrl.searchParams;
params.set('$param1', '60');
params.set('$param2', '100');

console.log(myUrl.toString().replace(/%24/g,"$"))
P粉986028039

Dans votre cas, la méthode $字符被编码为%24,因为它是URL中的保留字符。 URLSearchParams对象的set encode automatiquement ces caractères pour garantir que la chaîne résultante est une URL valide.

Cependant, si vous souhaitez inclure les caractères $ tels quels, vous pouvez contourner l'encodage automatique en construisant manuellement la chaîne de requête :

const myUrl = new URL("http://www.example.com/?");

let params = ['$param1=60', '$param2=100'].join('&');

myUrl.search = params;

console.log(myUrl.toString());
// 输出:http://www.example.com/?$param1=60&$param2=100

Cela vous donnera le résultat souhaité, mais veuillez noter qu'il ne s'agit peut-être pas d'une URL valide selon les spécifications de l'URL, car $ est un caractère réservé. Cela peut entraîner des problèmes avec certains serveurs ou API.

Si vous contrôlez le serveur ou l'API avec lequel vous interagissez et que vous êtes sûr qu'il peut gérer les URL avec $字符的URL,则此方法应该有效。否则,通常最安全的做法是使用URLSearchParams caractères dans la chaîne de requête, cette méthode devrait fonctionner. Sinon, il est généralement plus sûr d'utiliser l'encodage automatique fourni par URLSearchParams.

Veuillez confirmer si cette solution fonctionne pour vous ou si vous avez besoin d'aide supplémentaire.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!