Приведение в порядок JSON-подобной строки с помощью PHP и str_replace

Я помещаю значение поля inout в свою базу данных, которая имеет структуру следующей строки:

[{\"value\":\"Product 1\"},{\"value\":\"Product 2\"},{\"value\":\"Product 3\"}]

Теперь я хочу сделать его более читаемым в базе данных и убрать из строки все ненужные символы, чтобы получилось что-то вроде этого:

Product 1, Product 2, Product 3

Очевидно, я мог бы сделать это следующим методом:

str_replace(',',', ',str_replace('[','',str_replace(']','',str_replace('{\"value\":\"','',str_replace('\"}','',$INPUT_FIELD)))));

Но это кажется немного неуклюжим. Что было бы более красивым решением для этого?

Заранее спасибо!

РЕДАКТИРОВАТЬ

Var dumping $_POST показывает мне это для определенного поля ввода:

["project_products_used"]=> string(135) "[{\"value\":\"Product 1\"},{\"value\":\"Product 2\"},{\"value\":\"Product 3\"}]" 

Какой? json_decode JSON, а затем зациклить результат. Это JSON, просто с некоторыми побегами, с которыми вы можете справиться.

Jonnix 23.05.2019 11:11

Кроме того, вам действительно следует подумать об использовании таблицы с большим количеством строк, а не хранить значения, разделенные запятыми, как это.

Qirel 23.05.2019 11:11

Я использую библиотеку, которая возвращает это как строку, поэтому я не могу ее json_decode.

Bas 23.05.2019 11:12

Обычно вы используете json_decode() для строк...

Tyr 23.05.2019 11:12

Что вы можете. print_r(json_decode($INUPT_FIELD)); Если вы не могли этого сделать, вы также не могли заменить части строки.

Qirel 23.05.2019 11:12

@Qirel, я говорю DB, но в основном это поле ACF для Wordpress, мне просто нужно, чтобы оно отображало строку на определенной странице.

Bas 23.05.2019 11:13

Тогда используйте библиотеку, которая дает вам действительный JSON? Или лишить побегов? Или, если эта библиотека генерирует эту строку из ваших данных, используйте данные, а не строку? В любом случае, то, что вы делаете, на самом деле не так.

Jonnix 23.05.2019 11:14

Пожалуйста, обновите свой вопрос, а не сбрасывайте его в комментарии.

Tom Udding 23.05.2019 11:15

Тогда print_r(json_decode($_POST['project_products_used']));..

Qirel 23.05.2019 11:16

@Qirel почему-то это ничего не возвращает

Bas 23.05.2019 11:17

Не удалось воспроизвести 3v4l.org/5hmKf

Qirel 23.05.2019 11:20

Эта строка не содержит 135 символов даже с обратной косой чертой, если только она не заполнена невидимыми символами.

Jonnix 23.05.2019 11:21
Стоит ли изучать 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 и хотите разрабатывать...
0
12
137
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

просто json_decode в массив и используйте столбец_массива и взрываться, чтобы получить строку, которую вы хотите:

<?php
$a = "[{\"value\":\"Product 1\"},{\"value\":\"Product 2\"},{\"value\":\"Product 3\"}]";
var_dump(implode(", ", array_column(json_decode($a), "value")));

выход:

string(31) "Product 1, Product 2, Product 3"

демо

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