<?php
function splitOn($needle, $subject) {
$needle = preg_quote($needle, '/');
$pattern = '/(?<!\x5c)(?:\x5c.)*\K' . $needle . '/s';
return preg_split($pattern, $subject);
}
$rules = 'trim:-,left|replace:[0-9]\|[\,a-z],3|int';
$rules = splitOn('|', $rules);
$rules = array_map(function($rule) {
[$rule, $arguments] = explode(':', $rule, 1);
$arguments = splitOn(',', $arguments);
return [$rule, $arguments];
}, $rules);
var_dump($rules);
preferences:
48.84 ms | 402 KiB | 5 Q