PhpStorm 2016.2查找并替换多行文本

时间:2016-08-30 11:04:31

标签: php phpstorm

在PhpStorm 2016.2中,我有一个新项目已被继承,[非常]需要更新。

有许多页面都有这样的开头行(示例):

<?
include ("/inc/db.php");

我需要用以下几行代替这一行:

<?php
include "siteheader.php";
require "class.myclass.inc.php";
$dataBase = new DbObj();

我以前简单地将多行代码复制并粘贴到PhpStorm搜索/替换函数中,并且(通常但并不总是)返回正确的更改,尽管它们都被压缩成单行,使得它们更难阅读({{ 1}}字符被删除)。

  • 在这个例子中,我特意查看“替换路径”函数,因为我需要将此更改应用于许多页面。

我有Read the manual但是看不到这个选项。我想我可以使用正则表达式,但这不是理想的(逃避等)。

我也看了但没找到PhpStorm Plugin Repository的合适插件。

  

有没有办法在PhpStorm 2016.2中搜索和/或替换路径中的多行文字?

干杯

6 个答案:

答案 0 :(得分:4)

您可以执行多行查找和替换启用正则表达式选项

查找

<\?\ninclude \("/inc/db\.php"\);

替换:

<?php\ninclude "siteheader.php"; \nrequire "class.myclass.inc.php"; \n\$dataBase = new DbObj();

正如你所看到的,你需要做一些额外的工作来逃避一些特殊的角色并放置\n而不是换行,但是它有效。我刚刚检查过。

P.S。 实际上,可以简单地在以前的版本中粘贴多行文本,但这不可能了。 - (

答案 1 :(得分:4)

不幸的是,没有易于使用的多行搜索或替换多个文件(Find/Replace in Path功能)。

现在你必须使用正则表达式选项 - 这是唯一可行的选项。

观看这些门票(星级/投票/评论)以获得有关这方面的任何进展的通知。

手动制作与正则表达式兼容的文本可能会有很多问题。因此,您可能会使用以下几步技巧:

  1. 在一个文件中输入新文字以
  2. 开头
  3. 选择此类文字并调用Replace in Path...对话框 - 预先选择了正则表达式选项,它应自动将您的选择转义为兼容正则表达式
  4. 将已经转义的文本复制到某处(只是剪贴板应该足够了)
  5. 关闭对话框并返回原始文件
  6. 选择要替换的文本并调用Replace in Path...对话框 - 它将填写初始文本并与正则表达式兼容
  7. 将之前复制的转义文本粘贴到“替换字段”
  8. 执行查找/替换
  9. 相关说明:https://stackoverflow.com/a/38672886/783119

答案 2 :(得分:2)

键入 Alt + Enter 在&#34;搜索&#34;中添加新行。或者&#34;替换&#34;字段。

search multiline in PhpStorm

答案 3 :(得分:1)

在Mac上: 打开“查找”或“替换”工具,单击文本区域,然后对要创建的每个新行按一次以下键:

⌘+'Shift'+'Enter'

screen grab of the multi-line search goodness

答案 4 :(得分:0)

除了关于如何将正则表达式用于多行的建议外,如果您想将两段代码与中间的任意行匹配,则可以使用[\s\S]*代替[\n.]*(不能达到预期的效果)。示例:

//you can match the $result-related code using `\$result([\s\S]*)while`

$result = DB::exec($query);
//blabla
//something else
while ($row = $result->fetch()) {

答案 5 :(得分:0)

\s可以正常工作以匹配所有空格和换行符。

在我的情况下,我想找到switch ... case ... continue;语法,因此switch(\s|.)*continue正常工作