web-dev-qa-db-fra.com

Passez un pourcentage (%) dans une URL et obtenez sa valeur exacte en utilisant php

J'essaie de passer le pourcentage (%) de connexion à l'URL comme

%B6011000995504101^SB

mais quand je fais écho, ça revient

♦011000995504101^SB

Je veux exactement la même valeur que je la passe dans l'URL.

J'ai essayé d'utiliser la fonction urlencode (), mais cela me donne une sortie comme celle-ci ...

%B6011000995504101%5ESB

s'il vous plaît aidez-moi à ce sujet

26
Sumit Bijvani

Répondre:

Pour envoyer un % connectez-vous à une URL, envoyez plutôt %25.

Dans votre cas, pour que php puisse voir un signe de pourcentage, vous devez passer la chaîne de caractères %25B6011000995504101^SB au serveur.

Pourquoi:

Dans les URL, le signe de pourcentage a une signification particulière. Est utilisé pour encoder des caractères spéciaux. Par exemple, & est le séparateur entre les paramètres, donc si vous voulez que votre paramètre soit réellement contient an &, vous écrivez à la place %26. Étant donné que le signe de pourcentage est utilisé pour coder des caractères spéciaux, il s'agit de également un caractère spécial, et donc si vous souhaitez réellement envoyer un signe de pourcentage, il doit également être codé. L'encodage d'un signe de pourcentage est %25.

60
IanPudney

Avant d'inclure une chaîne brute dans une URL, c'est une bonne idée de la passer à travers le code url comme ceci:

<?php
$original='%B6011000995504101^SB';

$updated=urlencode($original);

echo "<a href=\"some_page.php?$updated\">Link here</a>";
?>

La page de réception saura quoi faire - essayez cet exemple sur votre serveur Web:

<?php

if($_GET['argument']) {
    echo "<p>You passed in the argument &quot;$_GET[argument]&quot;</p>";
}else {
    echo "<p>No argument was passed.</p>";
}
$original='%B6011000995504101^SB';

$updated=urlencode($original);

echo "<a href=\"urlencode.php?argument=$updated\">Link here</a>";
?>

(nommez le fichier rlencode.php)

3