Dette kan gøres med xpath. Her er et eksempel med Simplexml :
Du kan først finde alle de første blade:
foreach ($xml->xpath('//*[not(*) and not(preceding-sibling::*)]') som $firstLeaf) { ...}
og så samler du teksten sammen med alle følgende blade:
$followingWithSameName ='følgende-søskende::*[navn(.) =navn(forudgående-søskende::*[sidste()])]'; // ændre teksten på det første blad $firstLeaf[0] =implode(', ', $firstLeaf->xpath(".|$followingWithSameName"));
og så fjerner du alle følgende blade:
// fjern alle følgende blade med samme navn foreach ($firstLeaf->xpath($followingWithSameName) som $leaf) { unset($leaf[0]); }