imanghafoori / php-search-replace
Smart search replace functionality for php source code
Installs: 342 868
Dependents: 3
Suggesters: 0
Security: 0
Stars: 31
Watchers: 3
Forks: 5
Open Issues: 1
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
It is much easier than using regex.
Installation:
composer require imanghafoori/php-search-replace
Usage:
1- Lets say you want to remove double semi-colon occurances like these:
$user = 1;; $user = 2; ; $user = 3; ;
Then you can define a pattern like this:
$pattern = [';;' => ['replace' => ';']];
This will catch all the 3 cases above since the neutral php whitespaces are ignored while searching.
Placeholders:
Here is a copmerehensive list of placeholders you can use:
<var>
or<variable>
: for variables like:$user
<str>
or<string>
: for hard coded strings:'hello'
or "hello"<class_ref>
: for class references:\App\User::where(...
,User::where
<full_class_ref>
: only for full references:\App\User::
<until>
: to capture all the code until you reach a certain character.<comment>
: for commands (does not capture doc-blocks)<doc_block>
: for doc-blocks<statement>
: to capture a whole php statement."<name:nam1,nam2>"
or<name>
: for method or function names.->where
or::where
<white_space>
: for whitespace blocks<bool>
or'<boolean>'
: for true or false (acts case-insensetive)<number>
: for numeric values<cast>
: for type-casts like:(array) $a;
<int>
or<integer>
: for integer values<visibility>
: for public, protected, private<float>
: for floating point number"<global_func_call:func1,func2>"
: to detect global function calls.<in_between>
: to capture code within a pair of{...}
or(...)
or[...]
<any>
: captures any token.- You can also define your own keywords if needed!
You just define a class for your new keyword and append the class path to the end of Finder::$keywords[] = MyKeyword::class
property.
Just like the default keywords.
Example:
lets say you want to remove the optional comma from arrays:
$a = [ '1', '2', ]; $b = ['1','2',];
Then you can define a pattern like this:
$pattern = [',<whitespace>?]' => ['replace' => '"<1>"]']];
Here the <whitespace>?
mean an optional whitespace may reside there, and the "<1>"
means the value that matches the first placeholder should be put there.