Используя массивы ключей без кавычек, как это исправить на большом проекте?

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

И теперь у меня возникли проблемы с этим методом, я не знал, что это плохо, когда я начал свой проект. Я, наконец, хотел отобразить ошибки E_NOTICES по причинам, но он вылетает, потому что журнал перегружен миллионами уведомлений, таких как PHP Notice: Use of undefined constant message - assumed 'key',

Поэтому, чтобы исправить это, я мог бы добавить цитаты к своим ключам во всем проекте, но их так много! Есть ли способ добиться этого с помощью алгоритма или что-нибудь, чтобы исправить мой код? Я хочу заменить любую неопределенную константу на строку с кавычками, например:$my_array[key] от $my_array['key'],

Благодарю.

РЕДАКТИРОВАТЬ: мне удалось исправить все объявления, используя rejex, как это:

\[([^0-9\$\'\"\]])([^\'\"\]]*)\] в \[\'\1\2\'\]

Но этого мало, есть много ситуаций, когда ключи без кавычек используются без скобок, например:

array_key_exists(unquotedKey,$array)

$array['key'] = array( unquotedKey => array(96,56) );

так далее...

Я мог бы исправить все ситуации с помощью регулярных выражений, но я думаю, у меня будет много проблем, чтобы справиться с этим хорошо, и иногда ключи моих массивов действительно являются константами, и их не следует заключать в кавычки! Если у кого-нибудь есть лучшее решение, оно мне очень поможет.

Идеальным решением было бы иметь возможность получить мой код после того, как PHP заменил неопределенные константы на строки в кавычках, возможно ли это? Он делает это каждый раз, когда я компилирую, возможно, он временно где-то хранится.

2 ответа

Решение

Я использую Notepad++, который имеет функцию поиска и замены в файлах (Ctrl + Shift + F). При включенном режиме регулярных выражений вы можете использовать

Поиск:

\$my_array\[([^\'\"]+)\]

замещать

\$my_array\[\'$1\'\]

Поиск ищет что-либо в квадратных скобках ключа массива, где еще нет символа " или ", что указывало бы, что объявление уже допустимо.

Выберите каталог вашего проекта, затем нажмите "Заменить в файлах". Убедитесь, что весь ваш проект был заархивирован первым на случай, если что-то пойдет не так.

Используйте этот шаблон

      [a-zA-Z0-9]{1,}(\[([^'"$0-9]+)\])

чтобы найти ключи массива без кавычек, например:

      $_POST[content_id]
Другие вопросы по тегам