PhpStorm 2025.3 ヘルプ

構造検索と置換

従来の検索プロセスでは、ソースコードの構文とセマンティクスが考慮されていません。正規表現を使用している場合でも、PhpStorm はコードを正規表現として扱います。構造検索および置換SSR)アクションを使用すると、コード構造を考慮して、コード内の特定のコードパターンまたは文法構造を検索できます。

PhpStorm は、作成した検索テンプレートと適用した条件に基づいて、ソースコードのフラグメントを見つけて置き換えます。

ターゲットを構造的に検索する

  1. メインメニューで編集 | 検索 | 構造検索に移動して、構造検索ダイアログを開きます。

    構造置換ダイアログにすばやく切り替えるには、the Switch to Replace icon をクリックします。

  2. 構造検索ダイアログで、次のいずれかの操作を行います。

    • テンプレートを最初から作成します。テンプレートのリストから下書きテンプレートを選択し、エディター領域にコードテンプレート (たとえば、コードを表す $variable$) を入力します。

      カスタムテンプレートを将来使用するために保存するには、ダイアログツールバーの「テンプレートの保存」アイコン(the Save Template button)をクリックします。テンプレートをインスペクションとして保存することもできます。

      Structural Search dialog

      PhpStorm は、作成したテンプレートをテンプレートリストの最近ノードに追加します。

    • 既存のテンプレートの 1 つをプロトタイプとして使用します。使用可能な既存のテンプレートのリストから必要なテンプレートを選択します。

      class ExampleClass { public function WRONG() { } public function right() { } }

      クラス内で特定のメソッドを見つけましょう。

      From the list of existing templates, select the クラスのすべての public メソッド template under PHP | 一般

      the Existing Templates dialog

      プロジェクト全体でこれらの構造を検索するには、検索をクリックします。

      PhpStorm はエディターで見つかったコードの出現箇所を即座にハイライトします。

  3. 構造検索ダイアログには、選択したテンプレートとそのフィルターの値が表示されます。既存のフィルターを編集したり、新しい条件を追加したりできます。コード変数にキャレットを置き、フィルター領域を使用してフィルターを管理します。

    the Edit filters popup
  4. For example, add a condition for the $b$ variable.

  5. テキスト修飾子の場合は、次の正規表現を入力します。

    \b[a-z]\w+\b
    Add a regular expression in the filter dialog

    In this case, when you select the 大 / 小文字を区別する checkbox in the 構造検索 dialog, PhpStorm searches only for fields with lowercase characters in the first field.

    選択した言語に応じて、追加のオプションも利用できます。

    例: 次のオプションを確認します。

    • 言語 : リストを使用して、検索に含めるファイルの種類を選択します。この場合は PHP です。

    • ターゲット : リストを使って検索する項目を選択します。この場合は b です。

      Search target
    • 再帰 : 選択すると、PhpStorm は再帰検索を実行し、ネストされたすべての項目が結果に含まれます。例: 再帰を有効にしてメソッド呼び出しを検索すると、PhpStorm は foo(foo(foo())) 内のネストされた呼び出しを検索します。再帰を無効にすると、外側の呼び出しのみが検索されます。

    • 挿入されたコード : 選択すると、HTML 内の JavaScript や Java 内の SQL などの挿入されたコードも検索に含まれます。

    • 大 / 小文字を区別する : 選択すると、検索結果は検索対象の大文字と小文字を一致させます。

  6. 検索範囲(プロジェクト、モジュール、ディレクトリ、カスタムスコープ)を指定します。

  7. 検索をクリックします。

    PhpStorm は、検索ツールウィンドウに結果を表示します。

    Find tool window results

    You can add the new search template to structural search inspections as a custom template. To do this, click テンプレートからインスペクションを作成 in the 検索 tool window. You can then reuse it to inspect your code.

ターゲットを構造的に置き換える

  1. メインメニューで、編集 | 検索 | 構造置換に移動します。

  2. 構造置換ダイアログで、新規または既存のテンプレートを検索に追加し、テンプレート領域を置き換えます。置換テンプレートは、検索テンプレートと同じ方法で保存できます。

  3. 置換テンプレート内の変数にフィルターを追加する必要がある場合は、対象の変数にキャレットを置き、フィルター領域を使用してフィルターを管理します。

    Replace template filter
  4. フィルター領域では、あなたのように選択した内容に応じて、フィルター条件を指定してください。

  5. 置換結果を絞り込むには、次のオプションを選択します。

    • 完全修飾名を短縮する - 完全修飾クラス名を短縮名およびインポートに置き換えます。

    • 再フォーマット - 置き換えられたコードを自動的にフォーマットします。

    • 静的インポートを使用する - 可能であれば、静的インポートを代わりに使用します。

    必要なオプションを指定したら、検索をクリックします。PhpStorm は検索ツールウィンドウに結果を表示します。

  6. 検索ツールウィンドウでは、結果をさらに操作して、見つかったアイテムを 1 つずつ、または一度にすべて置き換えたり、潜在的な変更をプレビューしたりできます。

p タグの class 属性の大文字の値を小文字に変換する次の例を検討してください。検索テンプレートフィールドでは、class 属性に大文字の値([A-Z].* および大 / 小文字を区別する)を持つすべての p タグを検索するテンプレートを作成します。これらの検索のみを class 値(検索対象 = b)に絞り込みます。置換テンプレートフィールドで、新しい変数 $d$ を作成し、それに Groovy スクリプトを割り当てます(b.getText().toLowerCase())。検索後、すべて置換を選択して置換を実行します。

検索テンプレートを共有する

エクスポートまたはインポートすることで、検索テンプレートを同僚と共有できます。

  1. 構造検索ダイアログ(編集 | 検索 | 構造検索)で、新しい検索テンプレートを作成するか、既存のテンプレートを使用します。

  2. テンプレートをエクスポートするには、the Export Template to Clipboard icon をクリックします。PhpStorm は、テンプレートの XML 表現をクリップボードに追加します(クリップボードの内容を表示するには、Ctrl+Shift+V を押します)。この表現は、チャット、メール、フォーラムで他の開発者と共有できます。

    テンプレートをインポートするには、共有 XML コードを任意の場所(メール、チャット、フォーラム)からコピー(Ctrl+C)し、構造検索ダイアログで the Import Template from Clipboard icon をクリックします。PhpStorm は、XML コード表現を取得し、変数とスコープが存在する場合はそれを含むテンプレートに変換します。

2025 年 12 月 04 日

関連ページ:

検索テンプレート、修飾子、スクリプトの制約

構造検索用のテンプレートを作成するときは、基本的にスクリプトを作成します。スクリプト作成プロセスを簡素化するために、PhpStorm は、検索テンプレートのプロトタイプとして使用できる事前定義された検索テンプレートのリストを提供します。既存の検索と置換テンプレートのリストにアクセスする方法については、構造的な検索と置換のセクションを参照してください。有効な検索または置換テンプレートは、サポートされている次の言語構造の 1 つを表します。式、たとえば、ステートメント、または一連のステートメント、た...

カスタムインスペクションを作成する

カスタムインスペクションを作成するには、検索を構成してテンプレートを置き換える必要があります。IDE はテンプレートに一致するコードを検索し、それをエディターでハイライトします。設定ダイアログで、に移動します。を押してインスペクションの構成を選択することもできます。新しいインスペクションを作成するプロファイルを選択します。ツールバーでカスタムインスペクションの追加ボタン () をクリックし、インスペクションでコードのみをハイライトする場合は構造検索インスペクションの追加…を選択します。または、イ...

チュートリアル: 実装およびオーバーライドされた PHP メソッドの使用箇所を見つける

PHP の文脈では、PhpStorm は、実装されオーバーライドされたメソッドに使用箇所の検索機能を適用します。次の例を考えてみましょう: 次のように編成された、インターフェース、それを実装する抽象クラス、抽象クラスを拡張する 2 つのクラスを作成します。メソッドとのインターフェース、を実装している抽象クラス、を拡張し、インターフェースに必要なを実装し、親クラスのメソッドをオーバーライドするクラス、を拡張し、デリゲートを使用してを実装するクラス、とからそれぞれを呼び出すと変数:、<?php...