2014-09-11 2 views
0

Я читаю содержание GET строки запроса, и каждый раз, когда я сталкиваюсь & для ecample Blackstone Woodfire & Grill, GET читает Blackstone Woodfire.Чтение и символ, который передается через GET

Как я могу избежать этого, если это возможно?

Я знаю, что могу кодировать специальные символы со справочной страницы, а затем декодировать их, когда они направлены на эту страницу.

Мне просто интересно.

+0

Вы не должны его декодировать, это должно быть сделано автоматически. Можете ли вы сделать 'var_dump'' $ _GET'? – Flosculus

+0

* Как вы читаете querystrig? Каков точный ввод и точный код, который вы используете? Видя, что символ '&' является символом-разделителем, и опущен, поскольку он служит в качестве разделителя, если вы хотите «прочитать» знак '&', он должен быть закодирован как «&», если я не ошибаюсь. –

+0

Flosculus, я понимаю, что PHP будет читать это как отдельную переменную GET. – HelpNeeder

ответ

0

Вы можете использовать urlencode для кодирования строки get. И позже, если вы хотите получить его из $ _GET u urldecode.

Вы могли бы заменить все амперсандов на% 26

1

Проблема заключается в том, что параметры, отправленное с помощью ГЭТ, разделяются с помощью &. Так что если у вас есть URL, как

http:/example.com?param_1=value_1&param_2=value_2 

Вы будете иметь массив $ _GET как

array(
    param_1 => 'value_1', 
    param_2 => 'value_2' 
); 

Теперь, если вы пришлете и URL, как:

http://example.com?param_1=value_1 & value_2 

Вы будете иметь $ Массив _GET, такой как

Просто потому, что это способ отправки параметров GET. На стороне приема, вы не можете многое сделать, проблема лежит на другом конце. параметров GET, которые неоспоримым посыл действительно должны быть закодированы, в PHP, что делается с помощью

echo 'http://example.com?param_1=' . urlencode('value_1 & value_2'); 

Javascript использует encodeURIComponent(), чтобы решить эту проблему. PHP вызывает urldecode() автоматически при каждом параметре get, когда он создает ваш глобальный $ _GET.

Смежные вопросы