diff --git a/docs/index.md b/docs/index.md index 47b626a0..de141792 100644 --- a/docs/index.md +++ b/docs/index.md @@ -124,6 +124,7 @@ - [ExplodeTransformer] - [HashTransformer] - [ImplodeTransformer](reference/transformers/implode_transformer.md) + - [PregMatchTransformer](reference/transformers/preg_match_transformer.md) - [SlugifyTransformer](reference/transformers/slugify_transformer.md) - [SprintfTransformer] - [TrimTransformer](reference/transformers/trim_transformer.md) diff --git a/docs/reference/transformers/preg_match_transformer.md b/docs/reference/transformers/preg_match_transformer.md new file mode 100644 index 00000000..83270645 --- /dev/null +++ b/docs/reference/transformers/preg_match_transformer.md @@ -0,0 +1,53 @@ +PregMatchTransformer +========================= + +Perform a regular expression match + +This transformer uses the php internal function: https://www.php.net/manual/en/function.preg-match.php + +Task reference +-------------- + +* **Service**: `CleverAge\ProcessBundle\Transformer\String\PregMatchTransformer` +* **Transformer code**: `preg_match` + +Accepted inputs +--------------- + +`string` + +Possible outputs +---------------- + +`array` or `null` + +Options +------- + +| Code | Type | Required | Default | Description | +|------------|-----------|:--------:|---------|------------------------------------------| +| `pattern` | `string` | **X** | | | +| `flags` | `int` | | 0 | | +| `offset` | `int` | | 0 | | +| `mode_all` | `boolean` | | false | Use preg_match_all instead of preg_match | + +Examples +-------- + +```yaml +# Transformer options level +entry: + service: '@CleverAge\ProcessBundle\Task\ConstantIterableOutputTask' + outputs: [ preg_match ] + options: + output: 'foobarbaz' +preg_match: + service: '@CleverAge\ProcessBundle\Task\TransformerTask' + options: + transformers: + preg_match: + pattern: '/(foo)(bar)(baz)/' + flags: !php/const PREG_OFFSET_CAPTURE + property_accessor: + property_path: '[2]' +``` diff --git a/src/Transformer/String/PregMatchTransformer.php b/src/Transformer/String/PregMatchTransformer.php new file mode 100644 index 00000000..143ba36b --- /dev/null +++ b/src/Transformer/String/PregMatchTransformer.php @@ -0,0 +1,58 @@ +setRequired(['pattern']); + $resolver->setAllowedTypes('pattern', ['string']); + $resolver->setDefault('flags', 0); + $resolver->setAllowedTypes('flags', ['int']); + $resolver->setDefault('offset', 0); + $resolver->setAllowedTypes('offset', ['int']); + $resolver->setDefault('mode_all', false); + $resolver->setAllowedTypes('mode_all', ['boolean']); + } +}