Печатать меньше и больше символов в PHP

У меня возникли проблемы с попыткой распечатать символы < > в HTML с помощью PHP.

Я добавляю строку « <machine> » к переменной.

Пример:

 $output .= " <machine> "; echo $output; 

Я попытался использовать escape-последовательности, но это не помогло. Любой совет?

&gt; = >
&lt; = <

Или вы можете использовать htmlspecialchars .

 $output .= htmlspecialchars(" <machine> "); 

Если вы выводите HTML, вы не можете просто использовать < и > : вы должны использовать соответствующие объекты HTML : &lt; и &gt;

Если у вас есть строка в PHP и вы хотите автоматически заменить эти символы соответствующими объектами HTML, вас будет интересовать htmlspecialchars() (цитирование) :

Выполненные переводы:

  • '&' (амперсанд) становится '&amp;'
  • '"' (двойная кавычка) становится '&quot;' когда ENT_NOQUOTES не установлен.
  • "'" (одинарная кавычка) становится '&#039;' только когда установлен ENT_QUOTES .
  • '<' (меньше) становится '&lt;'
  • '>' (больше) становится '&gt;'

В вашем случае часть кода, такая как эта:

$ output = "";

 echo htmlspecialchars($output, ENT_COMPAT, 'UTF-8'); 

Вы получите следующий HTML-код в качестве вывода:

  &lt;machine&gt; 

И на всякий случай, если вы хотите кодировать больше символов, вы должны взглянуть на htmlentities() .

Ваша проблема не в PHP, а скорее в том, что < и > используются в HTML. Если вы хотите, чтобы они отображались в браузере, вы, вероятно, захотите распечатать их версии с сохраненными сущностями:

  • &lt;
  • > is &gt;

Вы также можете использовать htmlspecialchars() для автоматического их преобразования:

 echo htmlspecialchars("<machine>"); 

Вам нужно включить их, например &lt; и &gt; – см. функции htmlentities() или htmlspecialchars() .

 echo htmlentities($output); 

или

 echo htmlspecialchars($output); 

Если вы не хотите беспокоиться о том, чтобы вручную перемещаться по вашей строке и заменять объекты.

Символы <и> должны отображаться в источнике HTML, но «<машина>» интерпретируется как тег XML. Используйте htmlentities () для преобразования всех специальных символов в String в их эквиваленты HTML или используйте «& lt; machine & gt;»

Решение:

 $output .= " <machine> "; $output = htmlentites($output); echo $output;