Заменить двойные кавычки одинарными кавычками в строке json в php

У меня есть строка json, которая содержит некоторый html и атрибуты. Я пытаюсь избежать или заменить двойные кавычки одинарными в этой строке. мой код работает с некоторыми атрибутами html, но не со всеми. Мой пример:

$json='{"en":"<b class = "test" size = "5" >Description</b>"}';
$json=preg_replace('/([^:,{])"([^:,}])/', "$1".'\''."$2",$json);
echo htmlspecialchars($json);
//ouput: {"en":"<b class='test' size='5" >Description</b>"}


Необходимый результат:

{"en":"<b class='test' size='5' >Description</b>"}

Интересная проблема. Вы пробовали regex101.com?

Blue Box 28.08.2018 06:48

В вашем примере это не строка JSON. Что создало такую ​​странную струну? Можете ли вы исправить это, чтобы вместо этого предоставить вам настоящий JSON (с правильным экранированием)?

Yuliy 28.08.2018 07:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
5
2
3 023
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте это: str_replace('"', "'",$json);

$json='{"en":"<b class = "test" size = "5" >Description</b>"}';
$json=str_replace('"', "'",$json);
echo htmlspecialchars($json);

На выходе будет: {'en':'<b class='test' size='5' >Description</b>'}

Спасибо за Ваш ответ. Значение json по-прежнему должно заключаться в двойные кавычки.

ferhado 28.08.2018 06:44
Ответ принят как подходящий

Я надеюсь, что это работает как ожидалось ([^{,:])"(?![},:])

$json='{"en":"<b class = "test" size = "5" >Description</b>"}';
$json=preg_replace('/([^{,:])"(?![},:])/', "$1".'\''."$2",$json);

Результаты в

{"en":"<b class='test' size='5' >Description</b>"}

Спасибо, это именно то, что мне нужно :)

ferhado 28.08.2018 06:58

Хорошее решение. Мы должны добавить, что в строке примера проблема с последней кавычкой заключается в том, что символ перед ней уже занят предыдущим совпадением. Вместо этого в вашем решении используется «негативный прогноз». Это не потребляет персонажей. Задача решена.

Blue Box 28.08.2018 07:05

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