Как кодировать URL в JavaScript и PHP?

Я хочу отправить URL-адрес в запросе POST в переменной под названием surl . Как я должен кодировать его в JavaScript и декодировать его в PHP? Например, значение surl может быть http://www.google.co.in/search?q=javascript+urlencode+w3schools .

РЕДАКТИРОВАТЬ

Извините, я забыл упомянуть, что это не форма представления, а запрос ajax.

Используйте encodeURIComponent(uri) (для кодирования) и decodeURIComponent(uri) для декодирования,

Например (кодирование).

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

Вывод

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

Декодирование остается для читателя. 🙂

Источник: http://www.w3schools.com/jsref/jsref_encodeURIComponent.asp

Вам ничего не нужно. Отправьте его как есть. Браузер и PHP будут выполнять все экранирование и отмену (если вы используете form.surl.value = surl; form.submit() и $_POST['surl'] ). Или вы можете просто использовать обычную форму без JavaScript (если она соответствует вашим потребностям).

Отвечая на комментарий к хэнасрафу. Попробуй это.

 <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); } ?> 

Для http://www.google.co.in/search?q=javascript+urlencode+w3schools он выводит

 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', ) 

Что касается PHP, это urlencode() и urldecode() .