3

引用符なしで多くの配列キーを使用してプロジェクトを開始しました。

そして今、私はこの方法に問題を抱えています。プロジェクトを開始したとき、それが悪いことだとは知りませんでした。最終的に E_NOTICES エラーを理由で表示したかったのですが、ログが のような何百万もの通知で過負荷になっているため、クラッシュしますPHP Notice: Use of undefined constant message - assumed 'key'

それを修正するために、プロジェクト全体でキーに引用符を追加できましたが、たくさんあります! 私のコードを修正するアルゴリズムや何かでこれを達成する方法はありますか? 未定義の定数を引用符で囲んだ文字列に置き換えたい EG: $my_array[key]by $my_array['key'].

ありがとう。

編集: 次のように、拒否を使用してすべての宣言を修正することに成功しました:

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

しかし、それだけでは十分ではありません。引用符で囲まれていないキーが括弧なしで使用される状況がたくさんあります。EG:

array_key_exists(unquotedKey,$array)

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

等...

正規表現を使用してすべての状況を修正できますが、それをうまく処理するには多くの問題が発生すると思います。また、配列のキーが実際には定数であり、引用してはならない場合もあります。誰かがより良い解決策を持っていれば、それは私を大いに助けてくれるでしょう.

完璧な解決策は、PHP が未定義の定数を引用符で囲まれた文字列に置き換えた後にコードを取得できるようにすることですが、可能ですか? コンパイルするたびにそれを行いますが、おそらく一時的にどこかに保存されます。

4

2 に答える 2

1

ファイル内の検索と置換機能 (Ctrl + Shift + F) を備えたNotepad++を使用します。正規表現モードをオンにすると、次を使用できます

探す:

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

交換

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

検索では、宣言がすでに有効であることを示す文字"または'がまだない配列キーの角かっこ内にあるものが検索されます。

プロジェクトのディレクトリを選択し、[Replace in Files] をクリックします。何か問題が発生した場合に備えて、プロジェクト全体が最初にバックアップされていることを確認してください。

于 2015-01-07T10:34:07.183 に答える