imanghafoori / php-search-replace
Smart search replace functionality for php source code
Installs: 458 423
Dependents: 3
Suggesters: 0
Security: 0
Stars: 32
Watchers: 1
Forks: 5
Open Issues: 1
pkg:composer/imanghafoori/php-search-replace
Requires
- php: ^7.1.3|8.0.*|8.1.*|8.2.*|8.3.*|8.4.*
Requires (Dev)
- phpunit/phpunit: ^8.0|^9.0|^10.0|^11.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.- ->whereor- ::where
- <white_space>: for whitespace blocks
- <not_whitespace>: for non-whitespace
- <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.