function merge_on_overlap(string $a, string $b): string {
$lenA = strlen($a);
$lenB = strlen($b);
$maxPossibleverlapLen = min($lenA, $lenB);
$overlap = 0;
// Try longest overlap first
for ($len = $maxPossibleverlapLen; $len > 0; $len--) {
if (substr($a, $lenA - $len) === substr($b, 0, $len)) {
$overlap = $len;
break;
}
}
return $a . substr($b, $overlap);
}
$a = "fantasy time travel technology";
$b = "technology extraterrestrial life";
echo merge_on_overlap($a, $b);
/*
run:
fantasy time travel technology extraterrestrial life
*/