Модификатор / e больше не поддерживается

Привет, я использую preg_replace_callback

$data = "a:6:{s:4:"home";s:32:"Rue d'Alsace Lorraine, Toulouse";s:6:"school";s:30:"Avenue de Fronton, Saint-Alban";s:9:"last_name";s:5:"Devis";s:10:"first_name";s:4:"Test";s:5:"phone";s:10:"0611223344";s:12:"got-distance";s:1:"1";}";


$data = preg_replace_callback(
    '!s:(\d+):"(.*?)";!se',
    function($matches) { return "'s:'.strlen('$2').':\"$2\";'"; },
    $data
);

но я функция возвращает null, потому что модификатор e не поддерживается, с этим может помочь кто-нибудь, я думаю, мне нужно изменить регулярное выражение, но я плохо разбираюсь в регулярных выражениях.

Цель этого - передать $ data для десериализации функции.

Укажите, что именно вы пытаетесь заархивировать с помощью своего кода.

Tewdyn 09.06.2018 17:20

Разве это не просто сериализованное значение, которое может быть unserialized?

u_mulder 09.06.2018 17:27

Я отредактировал код, теперь он готов, если вы можете использовать этот пример, и preg_replace_callback не возвращает null, поэтому я ищу

jsf 09.06.2018 17:27

Да, цель этого - десериализовать его

jsf 09.06.2018 17:28

В обратном вызове у вас есть массив $matches, это print_r(), посмотрите, что у вас там есть, и обработайте.

u_mulder 09.06.2018 17:30

По какой странной причине у вас сериализованы данные неправильной длины?

Casimir et Hippolyte 09.06.2018 17:36

Я сделал, но print_r ничего не печатает

jsf 09.06.2018 17:36

Пожалуйста, возьмите пример, он завершен, preg_replace_callback не должен возвращать null

jsf 09.06.2018 17:40

я думаю, что с preg_replace_callback вам не нужен модификатор e, и вы можете легко его удалить

Norman M 09.06.2018 17:43

Да, но он возвращает null, если я удалил модификатор e

jsf 09.06.2018 17:48

Мне нужен обходной путь, чтобы это сработало

jsf 09.06.2018 17:48

Его спрашивают то и дело, очень часто. Ответов много. На самом деле, просто поищите немного, и вы обнаружите, что вам нужно использовать переменную вместо заполнителей. preg_replace_callback('!s:(\d+):"(.*?)";!s', function($matches) { return 's:'.strlen($matches[2]).':"'. $matches[2] . '";'; }, $data); (поправьте замену, так как непонятно, что именно должно быть).

Wiktor Stribiżew 09.06.2018 19:29
Стоит ли изучать 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
42
0

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