@harines

Как исключить последовательность из 2+ символов в регулярном выражении PHP?

есть текст:
cart = {"note\":null,\"cart_level_discount_applications\":[]};\n MAKEBECOOL_BUNDLES.product = {"id\":7148755124373,\"title\":\"Couch Jumper White 6 Pack\",\"handle\":\"couch-jumper-white-6-pack\",\"description\":\"\\u0026lt;p\\u0026gt;Ultra-comfortable, "variants": anti-bacterial socks You’re gonna love them as much as we do! Guaranteed!\\u0026lt;\\\/p\\u0026gt;\"};\n MAKEBECOOL_BUNDLES.isPhysicalBundle = true;\n

нужно вытащить JSON от {"id до t;\"};

написал такую регу,
~({[\\\\]*"[^;]*?"variants[\\\\]*":.*?"}+);~i

если делать так ~({[\\\\]*".*?"variants[\\\\]*":.*?"}+);~i
то залетает первый ненужный жсон в результат

возникла трудность, что исключение ; не срабатывает по причине того, что знак попадается в нужном тексте, необходимо исключить последовательность символов }; для того чтобы несколько жсонов не залетали в результат, и вообще не могу никак разобраться, как можно исключить больше одного символа именно в последовательности(тоесть одна } - можно, одна ; - можно, а }; - нельзя)

спасибо!

--------
Вопрос решен, ответ в комментарии от пользователя dodo512, просьба кураторам закрыть пост.
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 3
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
$s = 'cart = {"note\":null,\"cart_level_discount_applications\":[]};\n MAKEBECOOL_BUNDLES.product = {"id\":7148755124373,\"title\":\"Couch Jumper White 6 Pack\",\"handle\":\"couch-jumper-white-6-pack\",\"description\":\"\\u0026lt;p\\u0026gt;Ultra-comfortable, "variants": anti-bacterial socks You’re gonna love them as much as we do! Guaranteed!\\u0026lt;\\\/p\\u0026gt;\"};\n MAKEBECOOL_BUNDLES.isPhysicalBundle = true;\n';
echo(strtr(explode('\n ', $s)[1], ['MAKEBECOOL_BUNDLES.product = ' => '', '\"' => '"']));


Доработайте под себя. Регулярки тут нафиг не нужны.
Ответ написан
dimovich85
@dimovich85
https://u-academy.net/
Хоть и js, но регулярки по идее дело общее: https://learn.javascript.ru/regexp-lookahead-lookbehind
Ответ написан
Stalker_RED
@Stalker_RED
У вашего JSON-а какие-то проблемы с экранированием, похоже.

Ну вот, например https://regex101.com/r/QP4Bqx/1

А вариант починить json и прочитать его через json_decode вы не рассматриваете?
Ответ написан
Ваш ответ на вопрос

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

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