Делаем так: echo json_encode(['id' => 123], JSON_HEX_QUOT);
На выходе получаем: {"id":123}
Не понимаю в чем проблема. Мне нужно закодировать кавычки чтобы вывести json в data атрибут html.
во первых, оставьте в покое сам json. Данный формат подразумеваем, что имена полей всегда заключены в двойные кавычки, как и строковые значения полей. Это формат, на него влиять вы не сможете.
Ваша проблема в том, чтобы вывести строку, содержащую двойные кавычки, в дата-атрибут.
Все что для этого надо сделать - чтобы в данной строке не встретилась двойная кавычка, и не нарушила разметку. Для этого следует заменить двойные кавычки в строке на их эквивалент - ", для чего предназначены функции htmlentities() (с параметром ENT_COMPAT) либо htmlspecialchars()
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники