Используя массивы ключей без кавычек, как это исправить на большом проекте?
Я начал проект, используя много ключей массивов без кавычек.
И теперь у меня возникли проблемы с этим методом, я не знал, что это плохо, когда я начал свой проект. Я, наконец, хотел отобразить ошибки 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]