|
|
|
| Передаю в адресной строке такую информацию:
http://site.ru/search.php?br=1%%%%20%26%201
|
А результат анализурую таким образом:
<?php
$br = $_GET['br'];
file_put_contents('test.txt',$br);
|
Получаю следующее (при чтении редактором WinHex):
31 25 25 25 20 26 20 31
То есть: 1%%% & 1
А куда же делись проценты от %20 и %26 ? Почему от них остались только коды 20 и 26? | |
|
|
|
|
|
|
|
для: Владимир55
(21.07.2012 в 13:32)
| | %20 - это код пробела, после обработки urlencode, тоже самое %26, это &. Сервер восстанавливает эти символы (urldecode). | |
|
|
|
|
|
|
|
для: confirm
(21.07.2012 в 15:12)
| | В моем случае, как Вы видите, нет urlencode / urldecode.
Или Вы имеете в виду, что сервер это делает самостоятельно, в принудительном порядке? | |
|
|
|
|
|
|
|
для: Владимир55
(21.07.2012 в 16:53)
| | Вы сами ручками прописали это, а сервер САМ восстанавливает, ну если хотите называйте это "понимает", что это за символы.
Если вам надо такое передать, то делать это надо так:
<?
echo 'http://site.ru/search.php?br='.urlencode('1%%%%20%26%201');
//результат
//http://site.ru/search.php?br=1%25%25%25%2520%2526%25201
| Обратите внимание как обработаны данные. | |
|
|
|
|
|
|
|
для: confirm
(21.07.2012 в 17:04)
| | Тут идея вот в чем.
Я передавал через адресную строку бренды, кодируя пробелы как %20. И все работало отлично, пока не встретилась фирма, в названии которой был амперсант.
Я его закодировал как %26, а при разборке полученных через адрес данных предполагал их преобразовать
<?php
$br = $_GET['br'];
$br = str_replace("%20", " ", $br);
$br = str_replace("%26", "&", $br);
|
Смотрю, а они уже в своем первородном виде - как пробел и ампесант, и преобразований str_replace не потребовалось.
Вот и решил рассказать об этом фокусе. | |
|
|
|
|
|
|
|
для: Владимир55
(21.07.2012 в 17:44)
| | str_replace тут не к месту, кодировать надо подобные символы.
<?
if(isset($_GET['br'])) echo $_GET['br'].'<br>'; //ваши исходные данные
echo '<a href="?br='.urlencode('1%%%%20%26%201').'">TEST</a>';
|
А восстанавливать такие значения из строки, это urldecode(). | |
|
|
|
|
|
|
|
для: confirm
(21.07.2012 в 18:03)
| | кодировать надо подобные символы
Кстати - да, это было бы корректнее.
Спасибо. | |
|
|
|