<?php
$arr = [
'Концерт группы Ленинград',
'Группа ZebraHead',
'ZebraHead',
'Группа СПЛИН',
'Ленинград',
'Концерт группы ZebraHead',
'ZebraHead. Презентация альбома',
'СПЛИН в Олимпийском',
'Крематорий',
'Группировка Ленинград'
];
$newarr = [];
 
$words = [];
$result = [];
 
foreach($arr as $key => $val){
    //приводим к нижнему регистру
    $val = strtolower($val);
 
    //убираем знаки препинания и прочие символы
    $val = str_replace(".", "", $val);
    $val = str_replace(",", "", $val);
    $val = str_replace("/", "", $val);
    $val = str_replace(";", "", $val);
    $val = trim($val);
 
    //запоминаем "очищенные" слова
    $newarr[$key] = $val;
 
    //разделяем слова в массив
    $cw = explode(" ", $val);
 
    //запоминаем весь список слов
    foreach($cw as $word){
    	array_push($words, $word);
    }
}
 
 
foreach($words as $word){
	$ca = [];
 
	foreach($newarr as $key => $phrase){
		//проверяем, что фраза содержит это слово
		if(strpos($phrase, $word) !== false){
			//если так, то запоминаем
			array_push($ca, $arr[$key]);
		}
	}
 
	$result[$word] = $ca;
}
 
print_r($result);