Регулярное выражение для десериализации строки, разделенной точкой с запятой

0

У меня есть строка, которая имеет следующий формат:

"{\"A5\";\"A6\";\"A7\";\"varying number of params...\"}"

Как я могу использовать PHP для преобразования строки в A5, A6, A7, varying number of params...

Я знаю, что str_replace - это способ, но мне было интересно, если что-то лучше сделать с регулярным выражением?

  • 0
    Не используйте регулярные выражения для этого. Это сложнее, чем комбинация str_replace и explode .
  • 0
    Может ; появляются внутри кавычек? Формат, который у вас есть, предполагает, что это возможно.
Показать ещё 1 комментарий
Теги:

2 ответа

1
Лучший ответ
(?<=\\")[^\\;]+

Попробуйте это. Смотрите демоверсию.

https://regex101.com/r/sH8aR8/53

$re = "/(?<=\\\\\")[^\\\\;]+/";
$str = "\"{\"A5\";\"A6\";\"A7\";\"varying number of params...\"}\"";

preg_match_all($re, $str, $matches);

Детали:

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  (?<=                     look behind to see if there is:
--------------------------------------------------------------------------------
    \\                       '\' 
--------------------------------------------------------------------------------
    "                        '"'
--------------------------------------------------------------------------------
  )                        end of look-behind
--------------------------------------------------------------------------------
  [^\\;]+                  any character except: '\\', ';' (1 or more
                       times (matching the most amount possible))
2

Также вы можете использовать str_replace с массивами, если вам не нужна сила регулярного выражения:

echo str_replace(array('"{\"', '\";\"', '\"}"'), array("", ", ", ""), $str);

A5, A6, A7, varying number of params... test at eval.in

  • 0
    Круто !!! где ты был в эти дни !!!!! ТАК не хватает твоих остроумных ответов :)
  • 0
    Спасибо, тебе нравится @vks :) Я вижу, у тебя уже много очков! Grats 10k +
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню