#php
#php
Вопрос:
Может кто-нибудь сказать мне, что я делаю неправильно, о том, как наложить массив на амперсанд с помощью PHP? Я пытаюсь отправить строку в AJAX, которая исходит из этого массива; и ничего из того, что я пытаюсь, не работает ->
$mrq = (implode("amp;",$mrqa));
выдает
macro0=A¯o1=B
Тем не менее, я ожидал, что это даст
macro0=Aamp;macro1=B
Есть ли способ обойти это? Я использую UTF-8, так что это не должно быть проблемой.
Комментарии:
1. Для построения запроса вы должны использовать http_build_query
2. Проблема не во сжатии, проблема в выводе. Используйте
htmlspecialchars
или смотрите вывод в виде обычного текста, а не в html.3. Убедитесь, что вы отображаете как UTF-8, если ваши строковые значения $ mrqa равны UTF-8
4. @OZ_ 1 Вы правы — это потому, что браузер интерпретирует часть строки как HTML-объект. Это отображается
amp;macr
как¯
. Ищитеamp;macr;
на этой странице .5. @OZ_ Пожалуйста, опубликуйте ответ 😉 Вы только что ответили на вопрос, и нет кнопки «поддержать комментарий в качестве ответа»…
Ответ №1:
Проблема не в implode, проблема в выводе, потому что amp;macr
это объект html.
Используйте htmlspecialchars
или смотрите вывод в виде обычного текста, а не в html.
Также, как упоминалось в комментариях, для построения вашего запроса вы можете использовать функцию http_build_query.
Ответ №2:
Вы можете преобразовать каждый параметр, прежде чем вводить URL.
foreach($mrqa as $key => $m)
$mrqa[$key] = urlencode($m);
$mrq = implode("amp;",$mrqa);