<?php
$text = '
Balthazar - True Love # Maarten Devoldere
Adani & Wolf - Let It Go # Daniel Testas
Adani & Wolf - Let It Go # Rob Gaasterland
Balthazar - True Love # Maarten Devoldere
Balthazar - True Love # Jinte Deprez
Balthazar - True Love # Name 3
';
preg_match_all('/^([^#]+)#([^\n]+)/m', trim($text), $matches, PREG_SET_ORDER);
foreach ($matches as $v) {
$result[trim($v[1])][] = trim($v[2]);
}
foreach ($result as $k => $v){
echo $k .' # '. join(', ', $v) . PHP_EOL;
}
Balthazar - True Love # Maarten Devoldere, Maarten Devoldere, Jinte Deprez, Name 3
Adani & Wolf - Let It Go # Daniel Testas, Rob Gaasterland
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Balthazar - True Love # Maarten Devoldere, Maarten Devoldere, Jinte Deprez, Name 3
Adani & Wolf - Let It Go # Daniel Testas, Rob Gaasterland