kolyunya / string-processor
PHP 字符串处理库。
1.0.0
2017-04-20 13:22 UTC
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-09-10 23:12:07 UTC
README
状态
描述
此库提供了一系列字符串处理器。
安装
此库支持composer。在项目中使用它,建议通过composer
引入。
composer require kolyunya/string-processor
单个处理器使用
基本使用
每个处理器实现了一个ProcessorInterface接口,该接口包含process
方法
/** * 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);
构建一个处理器,并在其上运行process($string)
$processor = new Processor(); echo $processor->process($string);
简短使用
您也可以不实例化处理器就直接使用它。每个处理器都有一个静态的run
方法。
/** * 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());
您可以在$parameters
数组中向处理器构造函数传递参数。您也可以直接传递一个参数,无需将其包装在数组中。
echo KebabCaseFormatter::run('snake_case'); // Output: "snake-case" echo Translator::run( 'Лорем ипсум долор сит амет', new RuEnDictionary() ); // Output: "Lorem ipsum dolor sit amet"
处理器组合
Multiprocessor
的使用
存在一个特殊的处理器(Multiprocessor
),允许您在一个处理器中组合多个处理器。假设您想将字符串转换为UPPER-KEBAB
格式。您可以使用Multiprocessor
组合两个处理器来解决此问题。
$processor = new Multiprocessor([ new KebabCaseFormatter(), new UpperCaseFormatter(), ]); echo $processor->process('snake_case'); // Output: "SNAKE-CASE" echo $processor->process('CamelCase'); // Output: "CAMEL-CASE"
UpperCaseFormatter
将在KebabCaseFormatter
之后应用。请注意,在第一个示例中,处理器的顺序无关紧要,但在第二个示例中实际上是重要的。
另一个常见的问题示例是生成URL别名。应从字符串中移除标点符号,将其转换为kebab-case
并转写。使用Multiprocessor
组合PunctuationStripper
、KebabCaseFormatter
和Translator
。
$processor = new Multiprocessor([ new RuEnTranslator(), new AlphabeticalPurifier(), new KebabCaseFormatter(), ]); echo $processor->process('Лорем ипсум долор сит амет'); // Output: "lorem-ipsum-dolor-sit-amet" echo $processor->process('Привет, Мир!'); // Output: "privet-mir"
处理器装饰
每个处理器都是一个装饰器。ProcessorInterface接口包含decorate
方法。
/** * Decorates supplied processor with the current processor. * @param ProcessorInterface $processor Processor to decorate. * @return ProcessorInterface Current processor. */ public function decorate(ProcessorInterface $processor);
这意味着上述示例可以使用处理器装饰来实现。虽然使用Multiprocessor
的方式更具可读性。
$processor = (new RuEnTranslator())->decorate( (new KebabCaseFormatter())->decorate( (new PunctuationStripper()) ) ); echo $processor->process('Лорем ипсум долор сит амет'); // Output: "lorem-ipsum-dolor-sit-amet" echo $processor->process('Привет, Мир!'); // Output: "privet-mir"
可用的处理器
目前实现了以下处理器
- 大小写转换器 - 格式化字符串到任意格式。
- CamelCaseFormatter - 将字符串格式化为
CamelCase
。 - KebabCaseFormatter - 将字符串格式化为
kebab-case
。 - SnakeCaseFormatter - 将字符串格式化为
snake_case
。 - UpperCaseFormatter - 将字符串格式化为
UPPER CASE
。 - LowerCaseFormatter - 将字符串格式化为
lower case
。
- CamelCaseFormatter - 将字符串格式化为
- 翻译器 - 将字符串从一种语言转换为另一种语言。
- 俄英翻译器 - 将字符串从俄语转换为英语,反之亦然。
- 净化器 - 净化字符串。
- 多处理器 - 结合多个处理器。