Я помещаю значение поля 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_decode() для строк...
Что вы можете. print_r(json_decode($INUPT_FIELD)); Если вы не могли этого сделать, вы также не могли заменить части строки.
@Qirel, я говорю DB, но в основном это поле ACF для Wordpress, мне просто нужно, чтобы оно отображало строку на определенной странице.
Тогда используйте библиотеку, которая дает вам действительный JSON? Или лишить побегов? Или, если эта библиотека генерирует эту строку из ваших данных, используйте данные, а не строку? В любом случае, то, что вы делаете, на самом деле не так.
Пожалуйста, обновите свой вопрос, а не сбрасывайте его в комментарии.
Тогда print_r(json_decode($_POST['project_products_used']));..
@Qirel почему-то это ничего не возвращает
Не удалось воспроизвести 3v4l.org/5hmKf
Эта строка не содержит 135 символов даже с обратной косой чертой, если только она не заполнена невидимыми символами.






просто 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"
Какой? json_decode JSON, а затем зациклить результат. Это JSON, просто с некоторыми побегами, с которыми вы можете справиться.