在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中搜索和/或替换路径中的多行文字?
干杯
答案 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
功能)。
现在你必须使用正则表达式选项 - 这是唯一可行的选项。
观看这些门票(星级/投票/评论)以获得有关这方面的任何进展的通知。
手动制作与正则表达式兼容的文本可能会有很多问题。因此,您可能会使用以下几步技巧:
Replace in Path...
对话框 - 预先选择了正则表达式选项,它应自动将您的选择转义为兼容正则表达式 Replace in Path...
对话框 - 它将填写初始文本并与正则表达式兼容答案 2 :(得分:2)
答案 3 :(得分:1)
答案 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
正常工作