- print_r: documentation ( source)
- preg_match_all: documentation ( source)
<?php
$names = ['viktor', 'kate'];
$message = 'I had :apple::apple::apple::apple: :apple:<@Viktor><@Kate>took:apple::apple: and later <@viktor> took again:apple:but not <@kate>';
$res = [];
foreach ($names as $name) {
preg_match_all("/(?:<@$name>(?:<@)?+|\G(?<!^))(?:(?!<@).)*?:apple:/i", $message, $matches);
$res[$name] = count($matches[0]);
}
print_r($res);