[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с регуляркой
faecker
Есть сериализованная строка:
blabla;index|i:898989;blabla;
Надо в ней число 898989 заменить на 555.

$pattern = '/(index.*)(\d+)(;)/';
$replacement = '${1}555$3';
echo preg_replace($pattern, $replacement, $string);

Выдает результат
blabla;index|i:89898555;blabla;
То есть заменяет только одну цифру числа. Что надо добавить, чтобы заменялось число полностью? Число может быть от 0 до шестизначного и меняться может от 0 до шестизначного.
Миша
Подойдёт такой вариант?
$test = str_replace("89", "5", $test);


_____________
Принимаю заказы, писать в ЛС
faecker
Цитата (Медведь @ 5.05.2016 - 15:51)
Подойдёт такой вариант?
$test = str_replace("89", "5", $test);

Не подойдет. 555 - это условно. Заменяться число в строке будет на переменную.
Там любое изначальное и любое входящее число может быть.
netruxa
так попробуй

$pattern = '/(index.*?)(\d+)(;)/';


_____________
ввв.парсер.рф - онлайн система проверки позиций Вашего сайта в поисковиках. Для форумчан 100 рублей на счет.
Guest
Нужно десериализировать, заменить значение, сериализоровать.
Смотри в сторону session_encode/session_decode. Они только зачем-то трогают $_SESSION, так ее нужно будет бекапить перед session_encode/session_decode.
Kusss
faecker
А что дальше происходит со строкой, ана не "преобразовывается" ( unserialize() ) обратно в массив ?
depp
unserialize -> replace -> serialize
faecker
Цитата (netruxa @ 5.05.2016 - 15:56)
так попробуй

$pattern = '/(index.*?)(\d+)(;)/';

Так работает. Волшебный знак вопроса. Спасибо!

unserialize почему-то нестабильно работает с данными из сессионным файлом, ошибки выдает то и дело, не надежно, надо что-то предварительно всегда со строкой делать;
session encode-decode тоже не подходит, потому что нет возможности обратиться к файлу сессии через session_stat.
Нужна ручная правка сессионного файла регуляркой в данном случае была.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.