andydune / custom-string-explode
Explode string using custom user rules.
Requires
- php: >=5.6
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ^5.7.15
README
Explode string using user custom rules.
Installation
Installation using composer:
composer require andydune/custom-string-explode
Or if composer was not installed globally:
php composer.phar require andydune/custom-string-explode
Or edit your composer.json
:
"require" : {
"andydune/custom-string-explode": "^1"
}
And execute command:
php composer.phar update
Instruction
There is any string we want to convert into array. String may be set of numbers with any delimiters, it can be email set and more.
It is better to see how it works for on specific points.
Rule: Numbers
use AndyDune\CustomStringExplode\Rule\Numbers; use AndyDune\CustomStringExplode\StringContainer; $numbers = new Numbers(); $explode = new StringContainer($numbers); $results = $explode->explode('123 13-4 00'); // Result is $result = [123, 13, 4, 00];
Rule: Emails
use AndyDune\CustomStringExplode\Rule\Email; use AndyDune\CustomStringExplode\StringContainer; $rule = new Email(); $explode = new StringContainer($rule); $results = $explode->explode('Андрей Рыжов, ; Andrey Ryzhov, simple@example.com , disposable.style.email.with+symbol@example.com x@example.com #!$%&\'*+-/=?^_`{}|~@example.org "()<>[]:,;@\\\"!#$%&\'-/=?^_`{}| ~.a"@example.org '); // Result is $result = [ 'simple@example.com', 'disposable.style.email.with+symbol@example.com', 'x@example.com', '#!$%&'*+-/=?^_`{}|~@example.org' ];
Rule: NumbersAndLatinLetters
I used it for extract hashes from any texts.
use AndyDune\CustomStringExplode\StringContainer; use AndyDune\CustomStringExplode\Rule\NumbersAndLatinLetters; $rule = new NumbersAndLatinLetters(); $explode = new StringContainer($rule); $results = $explode->explode('adqwdqw123 adasdsa;78 првиетhellow '); // Result is $result = [ 'adqwdqw123', 'adasdsa', '78', 'hellow' ];
Rule: DelimiterWhitespaceCharacter
It helps to explode string with any white space delimiter.
use AndyDune\CustomStringExplode\Rule\DelimiterWhitespaceCharacter; use AndyDune\CustomStringExplode\StringContainer; $rule = new DelimiterWhitespaceCharacter(); $explode = new StringContainer($rule); $results = $explode->explode('123 13-4 00'); // Result is $result = [ '123', '13-4', '00' ];
Create custom rules
You may build your onw rules for explode strings as you wish. All rules mast implement RuleAbstract
interface.
Lets look at the code:
namespace AndyDune\CustomStringExplode\Rule; use AndyDune\CustomStringExplode\StringContainer; abstract class RuleAbstract { /** * @var StringContainer */ protected $container; /** * @return StringContainer */ public function getContainer() { return $this->container; } /** * @param StringContainer $container */ public function setContainer($container) { $this->container = $container; } public function format($string) { return trim($string); } /** * @params string $char current char for check * @params string $item previously collected char * @params array $array array was colected during previous executions of method */ abstract public function check($char, $item, $array); }
You need to define method check
surely. This method returns boolean value:
true
- current char may be the part of stringfalse
- current char is separator
Overload method format
for final check every result array item. It make trim by default.
Method may returns null
or false
if item must be deleted from array.