регулярное выражение для изменения array () на [] с использованием атома - PullRequest
0 голосов
/ 19 июня 2020

Я хочу обновить свой php скрипт как проект (глобально) и изменить массив (элементы); to [elements];

Используя атом, я уже запускал обновление только для инициализации массивов и уже изменил array (); к []; однако это просто заботится о кодах инициализации пустых массивов.

Теперь задача состоит в том, чтобы изменить массивы, в которых действительно есть элементы, с () на []

Например, массивы могут быть в несколько форматов

array('content',number content,'content');

или

array(
      'content',
                array(
                      number content,'content'
                      )
      );

или любое изменение количества уровней.

Я разбил его таким образом, но не знаю, как это сделать регулярное выражение.,

Найти все вхождения массива (- заменить на [

Найти соответствующее закрытие этого массива); -replace with];

Найти каждый массив (внутри другого массива (-replace with [

Найти соответствующее закрытие каждого из этих массивов, которые находятся внутри другого массива); или просто) , - заменить ]; или],

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

спасибо

1 Ответ

1 голос
/ 20 июня 2020

Видя, что после этого вы готовы сделать некоторые ремонты вручную и что решение, предложенное в моем комментарии, вас интересует, я теперь помещаю его в «правильную» форму ответа. Это легче редактировать и обсуждать. Как было сказано ранее, это всего лишь «обходной путь», поскольку на самом деле мы не анализируем текст в смысле реального понимания его синтаксически. Однако, если вы повторно примените следующее Regexp

\barray\(([^()]*)\)

и замените его на

[$1]

(да, я пропустил «массив» перед «[»!), Вы может иметь шанс делать то, что вы хотите.

Я поставил \b перед Regexp, чтобы он смотрел на границу слова. Таким образом мы исключаем из изменения фрагменты текста типа is_array() или myarray().

...