Regex, чтобы поместить пропущенные кавычки вокруг ключей массивов - PullRequest
1 голос
/ 31 мая 2019

Я пытаюсь исправить свой PHP-код и добавить в кавычки ' вокруг ключей массивов в моем исходном коде.

У меня есть около 10000 файлов для исправления.Могу ли я использовать некоторые регулярные выражения для достижения этой цели?

Я пытался использовать это регулярное выражение, но оно не идеально:

\$([0-9a-zA-z_\-]+)\[([0-9a-zA-z_\-]+)\]\[([0-9a-zA-z_\-]+)\]

до

\$$1['$2']['$3']

Примерчто я хочу изменить:

$_SESSION[Name][name_2] to $_SESSION['Name']['name_2']
$_POST[Name][na-me_2] to $_SESSION['Name']['na-me_2']
$_GET[Name][na-me_2] to $_GET['Name']['na-me_2']
$tab[name_one] to $tab['name_one']

1 Ответ

2 голосов
/ 31 мая 2019

Скорее всего, мы можем зафиксировать наши индексы с группой, тогда preg_replace это, возможно, с выражением, похожим на:

\[(.+?)\]

Тест

$re = '/\[(.+?)\]/m';
$str = '$_SESSION[Name][name_2]
$_POST[Name][na-me_2]
$_GET[Name][na-me_2]
$tab[name_one]';
$subst = '[\'$1\']';

$result = preg_replace($re, $subst, $str);

echo $result;

RegEx

Если это выражение не нужно, его можно изменить / изменить в regex101.com .

Схема RegEx

jex.im визуализирует регулярные выражения:

enter image description here


Если мы хотим иметь больше ограничений, мы, безусловно, можем обновить это выражение.Например, если бы у нас уже были ключи с ' или ", то мы можем просто добавить новую границу, такую ​​как все символы, кроме ' и " в классе char:

[^'"]* 

и наше выражение станет:

\[([^'"]*?)\]

Демо

Тест

$re = '/\[([^\'"]*?)\]/m';
$str = '$_SESSION[Name][name_2]
$_POST[Name][na-me_2]
$_GET[\'Name\'][na-me_2]
$tab[name_one]
$_POST[Name]["na-me_2"]
$_POST[\'Name\']["na-me_2"]';
$subst = '[\'$1\']';

$result = preg_replace($re, $subst, $str);

echo $result;

Вывод

$_SESSION['Name']['name_2']
$_POST['Name']['na-me_2']
$_GET['Name']['na-me_2']
$tab['name_one']
$_POST['Name']["na-me_2"]
$_POST['Name']["na-me_2"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...