В htmlentities, как я могу выборочно кодировать символы так, чтобы они не кодировали теги <
и >
, но кодируют ли они &
?PHP htmlentities
ответ
Просто используйте:
<?php
$string = str_replace('&', '&', $string);
См this подробную информацию о str_replace из официальной документации.
попробовать что-то вроде этого:
$string = htmlentities($string);
$string = str_replace(array('<','>'), array('<', '>'), $string);
В официальной документации, htmlentities и str_replace
err ... во втором примере вы забыли один параметр – thejh
Вау, и это нужно было отредактировать .. Спасибо. –
@Col Похоже, что исходное сообщение хотело использовать htmlentities для кодирования всего, за исключением < and > –
Вы не получаете опцию «частично закодировать»; если есть определенные символы, которые вы хотите экранировать или не сбежать, вам придется делать это вручную. Например, чтобы сделать то, что вы сказать вы хотите:
str_replace('>', '>', str_replace('<', '<', htmlentities($s)))
Что это вы пытаетесь сделать, правда? Вышеизложенное кажется очень маловероятным. "
символы в разметке по-прежнему будут экранированы, изменяя значения атрибутов.
htmlentities
также в целом вызывает сомнения, поскольку, если вы специально не подгоняете его правильным аргументом charset, он будет калечить любые символы, отличные от ASCII, в строке в неправильные ссылки на объекты HTML. Обычно лучше использовать htmlspecialchars()
, что влияет только на несколько символов, которые действительно являются особыми и нуждаются в ускорении в HTML.
Если вы хотите сделать это, избегайте символа &
, вы можете сделать это с помощью простого str_replace('&', '&', $s)
, но опять же, что все равно заменит амперсанды, которые являются частью допустимой ссылки на объект или символ. Вы уверены, что хотите это сделать? Вы просто пытаетесь исправить неверно используемые неисключенные амперсанды? Если это так, вы можете попробовать регулярное выражение, чтобы выбрать любое использование &
, которое не является действительной ссылкой на объект/символ.
- 1. PHP htmlentities или htmlspecialchars
- 2. PHP массив и htmlentities
- 3. PHP Security (strip_tags, htmlentities)
- 4. php encoding issue htmlentities
- 5. php htmlentities corrupt string
- 6. PHP htmlentities Не работает
- 7. PHP UrlEncode htmlentities вопрос
- 8. символ PHP евро htmlentities
- 9. Как использовать PHP htmlentities()?
- 10. PHP htmlentities output not correct
- 11. PHP: using preg_replace с htmlentities
- 12. php htmlentities для декодирования textarea
- 13. декодировать htmlentities файла в PHP
- 14. Php DOMDocument Проблема с htmlentities
- 15. PHP soapCall создает нежелательные htmlEntities
- 16. Что конкретно делает htmlentities с строковыми htmlentities?
- 17. эквивалент htmlentities в JSP?
- 18. JSON htmlentities javascript
- 19. PHP htmlentities JSON строки текста андроида TextView
- 20. Акцентированные буквы с PHP: htmlentities и json_encode
- 21. PHP & mySQL: Когда именно использовать htmlentities?
- 22. PHP 5.6 htmlentities с по умолчанию charset
- 23. PHP mail() изменение некоторых символов на htmlentities?
- 24. PHP htmlentities() на входе против на выходе
- 25. PHP htmlentities не работает даже с параметрами
- 26. PHP htmlentities() и htmlspecialchars() повреждены/не работают
- 27. jQuery - Javascript, эквивалентный функции htmlentities() PHP
- 28. URL-фильтрация в php, filter_var или htmlentities
- 29. Ремонт акцентов на PHP с htmlentities
- 30. PHP htmlentities или htmlspecialchars = acentuation ошибка
Вы говорите о ".:;,??"? Если да, зачем их кодировать? Или вы говорите о кавычках? – thejh
1. Никогда не используйте htmlentities. 2. никогда не закодируйте что-нибудь рядом с '<' and '>', '&' и кавычками. –
Правильное решение этой проблемы, скорее всего, будет «Забудьте об объектах кодирования и просто убедитесь, что вы объявляете кодировку символов, которую используете»: http://www.w3.org/International/O-charset – Quentin