Найти и заменить регулярным выражением в Notepad ++ - PullRequest
0 голосов
/ 22 октября 2018

На данный момент у меня есть функция PHP, которая получает содержимое файла CSV и помещает его в многомерный массив, который содержит текст, который я распечатываю в различных местах, используя индексы.

Пример использования:

$localText[index][pageText][conceptQualityText][$lang];

Первый индекс, [index], будет названием страницы.Второй индекс [pageText] будет указывать, что это такое (текст для страницы).Третий индекс, [conceptQualityText], указывает, что представляет собой фактический текст.Последний индекс, [$lang], получает текст на нужном языке.

так:

-> расположение страницы

-> что это такое

-> содержимое

-> на каком языке оно должно отображаться.

В предыдущих версиях PHP все работало нормально.Однако при обновлении до 7.2 PHP кажется более строгим.Я был немного более зеленым ~ 2 года назад, когда я впервые принял это решение, и теперь знаю, что, поскольку эти индексы не определены как строки, например, заключены в одинарные кавычки, например: ['index'], они соответствуют обозначению суперглобального (DEFINE).Я тогда об этом не задумывался, но теперь PHP, кажется, интерпретирует их как суперглобальные, и поэтому я получаю сообщение об ошибке, что x word является неопределенным суперглобальным.

Моя первоначальная мысль - выполнить поиск и заменить в моем примере строку:

$localText[index][pageText][conceptQualityText][$lang];

с использованием функции регулярных выражений в Notepad ++.

Однако пример таков:просто один из многих, обозначение индексации массива в основном:

$localText[index][index2][index3][$lang];

Итак, мой вопрос:

Как я могу сделатьиспользовать поиск и замену Notepad ++, используя регулярное выражение, чтобы мои указатели указателей стали строками, а не действовали как суперглобальные переменные?

например, make:

$localText[index][index2][index3][$lang];

into:

$localText['index']['index2']['index3'][$lang];

Мне понадобится какая-то логика, которая проверяет все, что находится внутри скобок, и заключает их в одинарные кавычки, за исключением последнего индекса, [$lang].

Я пытался дать столько информации, сколькоssible, дайте мне знать, если что-нибудь нужно проработать.

Я попытался сослаться на эти документы без особой удачи.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Я нашел решение, используя

это:

найти: \b(localText\[)([a-zA-z0-9_\-]+)(\]\[)([a-zA-z0-9_\-]+)(\]\[)([a-zA-z0-9_\-]+)

заменить: $1'$2'$3'$4'$5'$6'

и оно работает как шарм,Спасибо всем, кто нашел время, чтобы помочь.

0 голосов
/ 22 октября 2018

Вы можете использовать следующее регулярное выражение для сопоставления:

\[[^'](\w+)[^']\]

Регулярное выражение соответствует слову в квадратных скобках, если оно не заключено в кавычки.

Заменить на:

['$1']

Регулярное выражение не будет соответствовать последним скобкам, поскольку оно содержит знак '$'.

...