Амперсанд в конце строки не отображается в браузере

StackOverflow https://stackoverflow.com/questions/1858611

  •  13-09-2019
  •  | 
  •  

Вопрос

Я печатаю строку, как показано ниже

Код:

echo "&words=".$rs['pw']."&"; 

Выход:

&words=Помощь|Хорошо

Обратите внимание, что последний & не печатается.

Но когда я добавляю пробел после & затем он печатается, как показано ниже

Код:

echo "&words=".$rs['pw']."& "; 

Выход:

&words=Помощь|Хорошо&

Сейчас & печатается.

Почему это происходит и в чем причина такого поведения?

Это было полезно?

Решение

Если вы выводите его в веб-браузер, вам следует избегать &, используя &amp; «&» в HTML часто используется для экранирования строк, а в URL-адресах — специальный символ, например <> и т. д.

Другие советы

Если вы выводите его на веб-страницу, браузер интерпретирует & особенный.Выберите «Просмотреть источник» в своем браузере, и вы увидите необработанный результат.Если вам нужно, чтобы она отображалась в контексте html, вам придется передать строку через htmlspecialchars перед печатью.Так:

$rs['pw'] = "Help|Good";
echo htmlspecialchars("&words=".$rs['pw']."&");

Этот код работает для меня

$rs['pw'] = "Help|Good";
echo "&words=".$rs['pw']."&";

Выход

&words=Помощь|Хорошо&

Это приводит меня к вопросу:Каков контекст?Где находится этот вывод кода, вы запускаете его на веб-сервере и просматриваете в браузере?Нет ли другого кода, который может быть причиной этого?

Если контекст похож на вывод в HTML, вам необходимо убедиться, что он находится в правильном месте.В HTML амперсанд имеет особое значение, и его следует избегать.Обычно это означает перевод на &amp;

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top