3v4l.org

run code in 500+ PHP versions simultaneously
<?php $pattern = <<<'REGEX' ~ (?(DEFINE) (?<dqstring> " [^\\"]*+ (?s: \\ . [^\\"]* )*+ " ) (?<bcontent> [^()"]*+ (?: \g<dqstring> [^()"]* )*+ ) (?<rbrackets> \( \g<bcontent> (?: \g<rbrackets> \g<bcontent> )*+ \) ) (?<pcontent> [^,()"]* (?: (?: \g<dqstring> | \g<rbrackets> ) [^,()"]* )* ) ) \G [(,] \s* (?<param> \g<pcontent> ) (*:param) | (?<funcName> \w+ ) (*:funcName) ~xu REGEX; $str = 'not(matches(#[Sécurité][Alarme][Mode]#, ["Desarmer",{"action":"Desarmer Sys"}]), result)'; preg_match_all($pattern, $str, $matches, PREG_SET_ORDER); foreach($matches as $m) { $type = $m['MARK']; echo "$type: ", $m[$type], PHP_EOL; }

preferences:
98.12 ms | 1272 KiB | 5 Q