Foundation

kaiseki/string-filter

Composable string filters with a simple pipeline.

A filter is any object implementing StringFilterInterface__invoke(string): string. StringFilterPipeline chains filters and applies them left to right, so transformations compose cleanly (and pipelines nest, since the pipeline is itself a filter). The package ships a few ready-made filters for tidying up markup/punctuation artifacts.

Installation

composer require kaiseki/string-filter

Requires PHP 8.2 or newer.

Usage

use Kaiseki\StringFilter\RemoveDanglingColon;
use Kaiseki\StringFilter\RemoveDoubleSquareBracketsStringFilter;
use Kaiseki\StringFilter\StringFilterPipeline;

$filter = new StringFilterPipeline(
    new RemoveDoubleSquareBracketsStringFilter(), // "[[Title]]" -> "Title"
    new RemoveDanglingColon(),                    // "Title:"    -> "Title"
);

echo $filter('[[Title]]:'); // "Title"

Included filters

FilterBehavior
StringFilterPipelineApply several filters in sequence.
PregReplaceStringFilterpreg_replace with matching pattern/replacement lists (throws if their lengths differ).
RemoveDanglingColonStrip a trailing colon: Title:Title.
RemoveDoubleSquareBracketsStringFilterUnwrap [[ … ]]: [[x]]x.
RemoveDoubleCurlyBracketsStringFilterUnwrap {{ … }}.
RemoveDoubleRoundBracketsStringFilterUnwrap (( … )).
RemoveDoubleAngleBracketsStringFilterUnwrap << … >>.

Write your own by implementing StringFilterInterface:

use Kaiseki\StringFilter\StringFilterInterface;

final class Uppercase implements StringFilterInterface
{
    public function __invoke(string $string): string
    {
        return strtoupper($string);
    }
}

Development

composer install
composer check   # check-deps, cs-check, phpstan

License

MIT — see LICENSE.

Previous
kaiseki/nested-array