imanghafoori / php-search-replace
为PHP源代码提供智能搜索替换功能
v1.1.13
2024-07-10 13:57 UTC
Requires
- php: ^7.1.3|8.0.*|8.1.*|8.2.*|8.3.*
Requires (Dev)
- phpunit/phpunit: ^8.0|^9.0|^10.0
- symfony/var-dumper: ^5.3
README
这比使用正则表达式要容易得多。
安装
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>"表示匹配第一个占位符的值应该放在那里。