<?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);