diff --git a/library/PhpGedcom/Parser/Fam.php b/library/PhpGedcom/Parser/Fam.php index f1112334..48bbe0c3 100644 --- a/library/PhpGedcom/Parser/Fam.php +++ b/library/PhpGedcom/Parser/Fam.php @@ -61,16 +61,27 @@ public static function parse(\PhpGedcom\Parser $parser) break; } + // HUSB, WIFE, CHIL ID are only defined at the top level + // Valid: + // 1 HUSB @I4@ + // Invalid: + // 2 HUSB + // 3 AGE 26y 7m 14d + if (1 === $currentDepth) { + switch ($recordType) { + case 'HUSB': + $fam->setHusb($parser->normalizeIdentifier($record[2])); + break; + case 'WIFE': + $fam->setWife($parser->normalizeIdentifier($record[2])); + break; + case 'CHIL': + $fam->addChil($parser->normalizeIdentifier($record[2])); + break; + } + } + switch ($recordType) { - case 'HUSB': - $fam->setHusb($parser->normalizeIdentifier($record[2])); - break; - case 'WIFE': - $fam->setWife($parser->normalizeIdentifier($record[2])); - break; - case 'CHIL': - $fam->addChil($parser->normalizeIdentifier($record[2])); - break; case 'NCHI': $fam->setNchi(trim($record[2])); break;