У вас нет опции «частично кодировать»; если есть определенные символы, которые вы хотите экранировать или не экранировать, вам придется сделать это вручную. Например, чтобы сделать то, что вы говорите вы хотите:
str_replace('>', '>', str_replace('<', '<', htmlentities($s)))
Что ты пытаешься делать? Вышеизложенное кажется маловероятным, чтобы быть полезным. "
символов в разметке все равно будут экранированы, искажение значений атрибутов.
htmlentities
в целом также сомнительно, потому что, если вы не укажете ему правильный аргумент charset, он будет искажать любые не-ASCII-символы в строке в неправильные ссылки на сущности HTML. Обычно лучше использовать htmlspecialchars()
, который влияет только на несколько символов, которые действительно являются особыми и требуют экранирования в HTML.
Если все, что вы хотите сделать, это экранировать символ &
, вы можете сделать это с помощью простого str_replace('&', '&', $s)
, но опять же, это все равно заменит амперсанды, являющиеся частью действительной ссылки на сущность или символ. Вы уверены, что хотите это сделать? Вы просто пытаетесь исправить неправильно использованные амперсанды без спасения? Если это так, вы можете попробовать регулярное выражение, чтобы выбрать любое использование &
, которое не является действительной ссылкой на сущность / символ.