Амперсанд в конце строки не отображается в браузере
Вопрос
Я печатаю строку, как показано ниже
Код:
echo "&words=".$rs['pw']."&";
Выход:
&words=Помощь|Хорошо
Обратите внимание, что последний &
не печатается.
Но когда я добавляю пробел после &
затем он печатается, как показано ниже
Код:
echo "&words=".$rs['pw']."& ";
Выход:
&words=Помощь|Хорошо&
Сейчас &
печатается.
Почему это происходит и в чем причина такого поведения?
Решение
Если вы выводите его в веб-браузер, вам следует избегать &, используя &
«&» в HTML часто используется для экранирования строк, а в URL-адресах — специальный символ, например <> и т. д.
Другие советы
Если вы выводите его на веб-страницу, браузер интерпретирует &
особенный.Выберите «Просмотреть источник» в своем браузере, и вы увидите необработанный результат.Если вам нужно, чтобы она отображалась в контексте html, вам придется передать строку через htmlspecialchars
перед печатью.Так:
$rs['pw'] = "Help|Good";
echo htmlspecialchars("&words=".$rs['pw']."&");
Этот код работает для меня
$rs['pw'] = "Help|Good";
echo "&words=".$rs['pw']."&";
Выход
&words=Помощь|Хорошо&
Это приводит меня к вопросу:Каков контекст?Где находится этот вывод кода, вы запускаете его на веб-сервере и просматриваете в браузере?Нет ли другого кода, который может быть причиной этого?
Если контекст похож на вывод в HTML, вам необходимо убедиться, что он находится в правильном месте.В HTML амперсанд имеет особое значение, и его следует избегать.Обычно это означает перевод на &