Comment coder l'URL en JavaScript et PHP?

Je souhaite envoyer une URL dans une demande POST dans une variable appelée surl . Comment puis-je l'encoder en JavaScript et le décoder en PHP? Par exemple, la valeur de surl pourrait être http://www.google.co.in/search?q=javascript+urlencode+w3schools .

MODIFIER

Désolé, j'ai oublié de mentionner, ce n'est pas une soumission de formulaire mais une requête ajax.

Utilisez encodeURIComponent(uri) (pour l'encodage) et decodeURIComponent(uri) pour le décodage,

Par exemple (codage).

 var uri="http://w3schools.com/my test.asp?name=ståle&car=saab"; document.write(encodeURIComponent(uri)); 

Sortie

Http% 3A% 2F% 2Fw3schools.com% 2Fmy% 20test.asp% 3Fname% 3Dst% C3% A5le% 26car% 3Dsaab

Le décodage est laissé au lecteur. 🙂

Source: http://www.w3schools.com/jsref/jsref_encodeURIComponent.asp

Vous n'avez besoin de rien. Envoyez-le comme il se doit. Le navigateur et PHP feront tout en vous échappant et vous déconcertant (si vous utilisez form.surl.value = surl; form.submit() et $_POST['surl'] ). Ou vous pouvez simplement utiliser le formulaire simple sans aucun JavaScript (s'il répond à vos besoins).

Répondant au commentaire de Henasraf. Essaye ça.

 <form id="form" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" onsubmit="this.via_js.value=this.via_plain_form.value;"> <input type="hidden" name="via_js"/> <input type="text" name="via_plain_form" value="Paste you url here"/> <input type="submit" name="submit" value="Submit"/> </form> <?php if (isset($_POST['submit'])) { var_export($_POST); } ?> 

Pour http://www.google.co.in/search?q=javascript+urlencode+w3schools , il produit

 array ( 'via_js' => 'http://www.google.co.in/search?q=javascript+urlencode+w3schools', 'via_plain_form' => 'http://www.google.co.in/search?q=javascript+urlencode+w3schools', 'submit' => 'Submit', ) 

Quant à PHP, c'est urlencode() et urldecode() .