Задать вопрос
nepster-web
@nepster-web

Парсинг переменных в строке, как получить данные ?

К примеру есть строка:

Пользователь {user_240} сделал {action_32}!

Подскажите пожалуйста как можно вытащить id 240 и 32?
  • Вопрос задан
  • 2783 просмотра
Подписаться 3 Оценить 1 комментарий
Решения вопроса 4
Вот так:
(.*){user_([0-9]+)}(.*){action_([0-9]+)}(.*)
на выходе ловите $2 и $4.
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
2 варианта Вам на выбор
1) выдирать user, action итд отдельными регулярками
2) выдрать единой регуляркой {(user|action)_(\d+)} и далее парсить в php в цикле
Ответ написан
rdifb0
@rdifb0
Программист, реалист
$text = 'Пользователь {user_240} сделал {action_32}!';

preg_match('/{user_(?P<user>\d+)}.*{action_(?P<action>\d+)}/', $text, $matches);

echo 'User is: ', $matches['user'], ', action: ', $matches['action'];
Ответ написан
Комментировать
А еще можно найти через strpos позиции "user_" или "action_" и "}" от этих позиций, и используя substr отрезать id, предварительно вычислив длину отрезаемой строки как разницу между скобкой и "user_" или "action_". Тогда регулярки не нужны.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы