Возможный дубликат:
Создать массив, напечатанный с помощью print_r
Дубликат Как создать массив из вывода массива, напечатанного с помощью print_r? который также имеет хороший пример кода для решения этой проблемы.
Мне нужно отменить журнал ошибок, который имеет выход print_r($data,true)
.
Пример данных будет выглядеть так:
Array ( [subject] => this is the subject [body] => <p>Dear user,</p><p>this is the body of the email</p> [from_id] => 0 [from_email] => admin@karakas.org [to] => Array ( [0] => Array ( [id] => 0 [email] => 64909 ) ) [send_to_inbox] => 1 )
В руководстве PHP есть print_r_reverse()
в комментариях: http://php.net/manual/en/function.print-r.php
Однако var_export()
может быть альтернативой, если ваши журналы сгенерированы с помощью var_export()
. Таким образом, вам понадобится eval()
для извлечения экспортируемого массива.
Результат print_r()
не предназначен для анализа; он предназначен для чтения разработчиком для целей отладки. Вы не должны пытаться его разобрать.
Если вам действительно нужно разобрать дамп данных PHP такого рода, var_export()
предназначена для такого рода вещей. Тем не менее, я бы тоже не рекомендовал разбор этого – это вряд ли будет лучшим решением для вас.
Если вы хотите сохранить строковое представление структуры массива, а затем проанализировать его позже, вам будет лучше использовать либо функции serialize()
/ unserialize()
, либо функции json_encode()
/ json_decode()
.
Оба они предоставят вам гораздо более надежный и легко анализируемый формат дампа данных. Из двух я бы рекомендовал json_encode()
каждый раз, так как это не только легко работать, но и поддерживаться другими языками, легко читается вручную и компактно.
Короче говоря, не print_r()
вывод print_r()
; json_decode()
этого используйте json_encode()
/ json_decode()
.