imanghafoori/php-search-replace

为PHP源代码提供智能搜索替换功能

v1.1.13 2024-07-10 13:57 UTC

README

tests Coverage Status Total Downloads Latest Stable Version Check Imports MIT Licensed

这比使用正则表达式要容易得多。

安装

composer require imanghafoori/php-search-replace

用法

1- 假设你想要移除像这样的双分号出现

$user = 1;;
$user = 2; ;
$user = 3;
;

然后你可以定义一个这样的模式

$pattern = [';;' => ['replace' => ';']];

这将捕获上述所有3种情况,因为搜索时忽略了中性的PHP空白。

占位符

以下是一个你可以使用的占位符列表

  • <var><variable>:用于变量,如:$user
  • <str><string>:用于硬编码字符串:'hello' 或 "hello"
  • <class_ref>:用于类引用:\App\User::where(...User::where
  • <full_class_ref>:仅用于完全引用:\App\User::
  • <until>:用于捕获直到你达到特定字符的所有代码。
  • <comment>:用于命令(不捕获文档注释)
  • <doc_block>:用于文档注释
  • <statement>:用于捕获整个PHP语句。
  • "<name:nam1,nam2>"<name>:用于方法或函数名称。 ->where::where
  • <white_space>:用于空白块
  • <bool>'<boolean>':用于true或false(不区分大小写)
  • <number>:用于数值
  • <cast>:用于类型转换,如:(array) $a;
  • <int><integer>:用于整数
  • <visibility>:用于public,protected,private
  • <float>:用于浮点数
  • "<global_func_call:func1,func2>":用于检测全局函数调用。
  • <in_between>:用于捕获成对出现{...}(...)[...]中的代码。
  • <any>:捕获任何令牌。
  • 如果需要,你也可以定义自己的关键词!

你只需要定义一个用于你的新关键词的类,并将类路径追加到Finder::$keywords[] = MyKeyword::class属性中。就像默认关键词一样。

示例

假设你想要从数组中移除可选逗号

$a = [
   '1',
   '2',
];
$b = ['1','2',];

然后你可以定义一个这样的模式

$pattern = [',<whitespace>?]' => ['replace' => '"<1>"]']];

这里<whitespace>?表示可能存在一个可选空白,而"<1>"表示匹配第一个占位符的值应该放在那里。