PhpStorm 2025.2 Help

结构化搜索和替换

传统的搜索过程不会考虑源代码的语法和语义。 即使您使用正则表达式,PhpStorm 仍然将您的代码视为常规文本。 结构化搜索和替换SSR )操作允许您根据代码结构在代码中搜索特定的代码模式或语法结构。

PhpStorm 根据您创建的 search templates和您应用的 conditions查找和替换源代码片段。

结构性地搜索目标

  1. 在主菜单中,转到 编辑 | 查找 | 结构化搜索 以打开 结构化搜索 对话框。

  2. 结构化搜索 对话框中,执行以下操作之一:

    • 从头开始创建您自己的模板.

      从模板列表中选择 草稿模板

      在编辑器区域中,输入表示您代码的代码模板($variable$ ),在对话框工具栏中点击 保存模板按钮 以保存供将来使用。 您也可以选择将该模板保存为一个 inspection。

      结构搜索对话框

      PhpStorm 将创建的模板添加到现有的模板列表(最近 节点)。

    • 使用现有的模板之一作为原型

      在可用的现有模板列表中,选择所需的模板。

      请考虑以下示例类:

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

      让我们在类中查找某个方法。

      在现有模板列表中,选择 类的所有公共方法模板,位于 PHP | 常规 下。

      现有模板对话框

      点击 查找

      PhpStorm 会在编辑器中即时突出显示所找到的代码。

  3. 结构化搜索 对话框显示了所选模板和模板中使用的过滤器的值。 您可以编辑现有过滤器或添加新的 条件。 将文本光标放置在代码变量处,并使用筛选区域管理筛选器。

    编辑过滤器弹出窗口
  4. 例如,让我们为 $b$ 变量添加一个条件。

    在筛选区域,点击 "添加"按钮 以添加新条件。 例如,如果您需要添加正则表达式,请选择 文本。 您还可以根据您的变量添加 其他条件

  5. 在打开的字段中输入您的条件。

    例如,让我们输入以下正则表达式:

    \b[a-z]\w+\b
    向过滤器对话框添加正则表达式

    在这种情况下,当您在 区分大小写 对话框中选中 结构化搜索 复选框时,PhpStorm只会搜索包含大写字符的字段。

    还请注意,根据选择的语言,有不同的附加选项可用。

    例如,检查以下选项:

    • Language :使用列表选择搜索中应包含的文件类型。 在本例中,它是 PHP

    • 目标 :在选项列表中,选择要搜索的条目。 在我们的情形中是 b.

      搜索目标
    • 递归 :如果选中此复选框,PhpStorm 将执行递归搜索,并且所有嵌套项都将包含在结果中。 例如,当您搜索方法调用时,启用 递归 选项,PhpStorm 将在 foo(foo(foo())) 中找到嵌套的方法调用。 如果禁用 递归 选项,只会找到外部方法调用。

    • 注入的代码 :如果选中此复选框,注入的代码(如 HTML 代码中注入的 JavaScript 或 Java 中注入的 SQL)将成为搜索过程的一部分。

    • 区分大小写 :如果选中此复选框,搜索结果将匹配搜索目标的大小写。

  6. 指定搜索位置:在项目、模块、目录或自定义范围内。

    点击 查找

    PhpStorm 会在 查找 工具窗口中显示结果。

    在“查找工具”窗口中显示的结果

    您可以通过点击 从模板创建检查查找 工具窗口中将新创建的搜索模板作为自定义模板添加到 structural search inspections中,稍后可以用它来检查您的代码。

替换一个目标结构

  1. 在主菜单中,进入 编辑 | 查找 | 结构性替换.

  2. 结构性替换 对话框中,向搜索和替换模板区域添加新模板或 现有模板。 您可以像 search 模板一样保存替换模板。

  3. 如果您需要为替换模板中的变量添加过滤器,请将文本光标放在相关变量处,并使用过滤器区域来管理过滤器。

    替换模板过滤器
  4. 在过滤器区域中,根据您选择的 过滤器 ,指定条件。

  5. 要缩小替换结果,请选择以下选项:

    • 缩短完全限定名称 - 将完全限定类名替换为简短名称和导入。

    • 重新格式化 - 会自动格式化替换的代码。

    • 使用 static import - 在可能的情况下使用静态导入进行替换。

    指定必要选项后,点击 查找。 PhpStorm 在 查找 工具窗口中显示结果。

  6. 查找 工具窗口中,您可以进一步处理结果,逐一替换找到的项目,或一次性替换所有项目,或预览您潜在的更改。

请考虑以下示例,将 class 属性中 p 标签的大写值转换为小写。 在 搜索模板 字段中,我们创建了一个模板,用于搜索 p 标签中所有大写值([A-Z].*区分大小写 ),位于 class 属性中。 我们将搜索范围缩小到这些 class 值(搜索目标 = b)。 在 替换模板 字段中,我们创建了一个新变量 $d$ ,并为其分配了一个 Groovy 脚本(b.getText().toLowerCase())。 搜索完成后,我们选择 全部替换 执行替换。

共享搜索模板

您可以通过导出或导入搜索模板与同事共享。

  1. 结构化搜索 对话框 编辑 | 查找 | 结构化搜索 中, 创建一个新的搜索模板或使用现有的模板

  2. 要导出模板,请点击 “导出模板到剪贴板”图标。 PhpStorm 将模板的 XML 表示添加到剪贴板(按 Ctrl+Shift+V 以查看剪贴板内容)。 您可以在聊天、电子邮件或论坛中与其他开发者共享此表示形式。

    要导入模板,请从任何地方(电子邮件、聊天或论坛)复制(Ctrl+C )共享的 XML 代码,并在 结构化搜索 对话框中点击 从剪贴板导入模板图标。 PhpStorm 接受 XML 代码表示并将其转换为模板,包括变量和作用域(如果存在)。

最后修改日期: 2025年 9月 26日