src/libs/FullNameParser.php
protected function is_line_suffix($word, $name)
	{

		# Ignore periods and righ commas, normalize case
		$word = str_replace('.', '', mb_strtolower($word));
		$word = rtrim($word, ',');

		# Search the array for our word
		$line_match = array_search($word, array_map('mb_strtolower', $this->dict['suffixes']['line']));

		# Now test our edge cases based on lineage
		if ($line_match !== false) {
			# Store our match
			$matched_case = $this->dict['suffixes']['line'][$line_match];

			# Remove it from the array
			$temp_array = $this->dict['suffixes']['line'];
			unset($temp_array[$line_match]);

			# Make sure we're dealing with the suffix and not a surname
			if ($word == 'senior' || $word == 'junior') {

				# If name is Joshua Senior, it's pretty likely that Senior is the surname
				# However, if the name is Joshua Jones Senior, then it's likely a suffix
				if ($this->mb_str_word_count($name) < 3) {
					return false;
				}

				# If the word Junior or Senior is contained, but so is some other
				# lineage suffix, then the word is likely a surname and not a suffix
				foreach ($temp_array as $suffix) {
					if (preg_match("/\b" . $suffix . "\b/i", $name)) {
						return false;
					}
				}
			}
			return $matched_case;
		}
		return false;
	}
protected function is_line_suffix($word, $name)
	{

		# Ignore periods and righ commas, normalize case
		$word = str_replace('.', '', mb_strtolower($word));
		$word = rtrim($word, ',');

		# Search the array for our word
		$line_match = array_search($word, array_map('mb_strtolower', $this->dict['suffixes']['line']));

		# Now test our edge cases based on lineage
		if ($line_match !== false) {
			# Store our match
			$matched_case = $this->dict['suffixes']['line'][$line_match];

			# Remove it from the array
			$temp_array = $this->dict['suffixes']['line'];
			unset($temp_array[$line_match]);

			# Make sure we're dealing with the suffix and not a surname
			if ($word == 'senior' || $word == 'junior') {

				# If name is Joshua Senior, it's pretty likely that Senior is the surname
				# However, if the name is Joshua Jones Senior, then it's likely a suffix
				if ($this->mb_str_word_count($name) < 3) {
					return false;
				}

				# If the word Junior or Senior is contained, but so is some other
				# lineage suffix, then the word is likely a surname and not a suffix
				foreach ($temp_array as $suffix) {
					if (preg_match("/\b" . $suffix . "\b/i", $name)) {
						return false;
					}
				}
			}
			return $matched_case;
		}
		return false;
	}
Checks word against array of common lineage suffixes

@param string $word the single word you wish to test
@param string $name full name for context in determining edge-cases
@return mixed boolean if false, string if true (returns suffix)