Vous n'avez besoin de rien. Envoyez-le tel quel. Le navigateur et PHP vont tous s'échapper et se dérober pour vous (si vous utilisez form.surl.value = surl; form.submit()
et $_POST['surl']
). Ou vous pouvez simplement utiliser le formulaire simple sans JavaScript (s'il répond à vos besoins).
Répondre au commentaire de henasraf. Essayez ceci.
<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 émet
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',
)
Corrigez-moi si je me trompe, mais + dans l'URL compterait comme espace, non? PHP ne le résoudra pas, je suis sûr, il va * corriger * les espaces réguliers et les transformer en signes "+" et vice-versa, mais pour ajouter un littéral + vous devrez utiliser "% 2B". Je pense que cela s'applique aussi dans d'autres cas. – casraf
PHP ou le navigateur ne se soucie pas si vous transmettez l'URL ou quelque chose d'autre. L'URL est traitée comme n'importe quelle autre donnée de formulaire. Le navigateur échappe tous les caractères de fantaisie dans vos données de formulaire, transmet des données, et PHP les désapparaît à l'autre extrémité. – codeholic