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>"
表示匹配第一个占位符的值应该放在那里。