AOC, day 7, part 2

<?php

$input1 = "190: 10 19
3267: 81 40 27
83: 17 5
156: 15 6
7290: 6 8 6 15
161011: 16 10 13
192: 17 8 14
21037: 9 7 18 13
292: 11 6 16 20";

function parse($targ, $res, $addmul, $numss) {
	if(sizeof($numss) == 0) {
		if($targ == $res) {
			return 1;
		} else {
			return 0;
		}
	}
	$tmp = $numss[0];
	unset($numss[0]);
	$numss = array_values($numss);
	if($addmul == "+") {
		$res += $tmp;
	} else {
		if($addmul == "*") {
			$res *= $tmp;
		} else { // added for part 2
			$res .= $tmp;
		}
	}
	$valid = parse($targ, $res, "+", $numss);
	if($valid == 1) {
		return 1;
	}
	$valid = parse($targ, $res, "*", $numss);
	if($valid == 1) {
		return 1;
	}
	// added for part 2
	$valid = parse($targ, $res, "|", $numss);
	return $valid;
}

$num = array();

foreach(preg_split("/((\r?\n)|(\r\n?))/", $input1) as $line){
	// do stuff with $line
	// Using preg_match_all to extract numbers
	preg_match_all('/\d+/', $line, $num[]);
}

$alltarg = 0;
foreach($num as $nums) {
	$numss = $nums[0];
	$targ = $numss[0];
	$res0 = $numss[1];
	unset($numss[0], $numss[1]);
	$numss = array_values($numss);
	$valid = parse($targ, $res0, "+", $numss);
	if($valid == 1) {
		$alltarg += $targ;
		continue;
	}
	$valid = parse($targ, $res0, "*", $numss);
	if($valid == 1) {
		$alltarg += $targ;
		continue;
	}
	// added for part 2
	$valid = parse($targ, $res0, "|", $numss);
	if($valid == 1) {
		$alltarg += $targ;
	}
}

print($alltarg."\n");

?>