kolyunya / string-processor
PHP string processing library.
Installs: 5 714
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: >=5.3 <8.0
Requires (Dev)
- phpunit/phpunit: >=4.8 <6.0
- squizlabs/php_codesniffer: >=2.8 <3.0
This package is auto-updated.
Last update: 2024-11-10 23:37:33 UTC
README
Status
Description
This library provides a collection of string processors.
Installation
This library is composer-enabled. The recommended way of using it in your project is to require it via composer
.
composer require kolyunya/string-processor
Single processor usage
Basic usage
Each processor implements the ProcessorInterface which contains the process
method:
/** * Processes a string and returns a processed version of the original string. * @param string $string A string to process. * @return string A processed version of the original string. */ public function process($string);
Construct a processor and run process($string)
on it:
$processor = new Processor(); echo $processor->process($string);
Shorthand usage
You can also use a processor without even instantiating it. Each processor has a static run
method.
/** * Processes a string and returns a processed version of the original string. * @param string $string A string to process. * @param object|array $parameters Parameters passed to the processor's constructor. * @return string A processed version of the original string. */ public static function run($string, $parameters = array());
You can pass parameters to the processor's constructor in the $parameters
array. You can also pass a single parameter without wrapping it into an array.
echo KebabCaseFormatter::run('snake_case'); // Output: "snake-case" echo Translator::run( 'Лорем ипсум долор сит амет', new RuEnDictionary() ); // Output: "Lorem ipsum dolor sit amet"
Processors combination
Multiprocessor
usage
There is a special processor (Multiprocessor
) which allows you to combine multiple processors in one. Suppose you want to convert a string to an UPPER-KEBAB
case. You can combine two processors using Multiprocessor
to solve this problem.
$processor = new Multiprocessor([ new KebabCaseFormatter(), new UpperCaseFormatter(), ]); echo $processor->process('snake_case'); // Output: "SNAKE-CASE" echo $processor->process('CamelCase'); // Output: "CAMEL-CASE"
The UpperCaseFormatter
will be applied after the KebabCaseFormatter
. Note that either the processors order does not matter in the first example, it actually matters in the second one.
Another common problem example is to generate URL slugs. A string should be purified from punctuation characters, converted to the kebab-case
and transliterated. Combine the PunctuationStripper
, the KebabCaseFormatter
and the Translator
using Multiprocessor
.
$processor = new Multiprocessor([ new RuEnTranslator(), new AlphabeticalPurifier(), new KebabCaseFormatter(), ]); echo $processor->process('Лорем ипсум долор сит амет'); // Output: "lorem-ipsum-dolor-sit-amet" echo $processor->process('Привет, Мир!'); // Output: "privet-mir"
Processors decoration
Each processor is a decorator. The ProcessorInterface contains the decorate
method:
/** * Decorates supplied processor with the current processor. * @param ProcessorInterface $processor Processor to decorate. * @return ProcessorInterface Current processor. */ public function decorate(ProcessorInterface $processor);
That means that the above example can be implemented using processors decoration. The Multiprocessor
usage is somewhat more readable though.
$processor = (new RuEnTranslator())->decorate( (new KebabCaseFormatter())->decorate( (new PunctuationStripper()) ) ); echo $processor->process('Лорем ипсум долор сит амет'); // Output: "lorem-ipsum-dolor-sit-amet" echo $processor->process('Привет, Мир!'); // Output: "privet-mir"
Available processors
Currently the following processors are implemented:
- Case switchers - format strings to arbitrary formats.
- CamelCaseFormatter - formats a string to the
CamelCase
. - KebabCaseFormatter - formats a string to the
kebab-case
. - SnakeCaseFormatter - formats a string to the
snake_case
. - UpperCaseFormatter - formats a string to the
UPPER CASE
. - LowerCaseFormatter - formats a string to the
lower case
.
- CamelCaseFormatter - formats a string to the
- Translators - transliterate strings from one language to another.
- RuEnTranslator - transliterates strings from Russian to English and the other way around.
- Purifiers - purify strings.
- PunctuationStripper - Strips punctuation characters.
- AlphabeticalPurifier - Strips non-alphabetical characters.
- Multiprocessor - combines multiple processors.