Iri::set_host( string $ihost ): bool

In this article

Set the ihost. Returns true on success, false on failure (if there are any invalid characters).

Parameters

$ihoststringrequired

Return

bool

Source

protected function set_host($ihost) {
	if ($ihost === null) {
		$this->ihost = null;
		return true;
	}
	if (substr($ihost, 0, 1) === '[' && substr($ihost, -1) === ']') {
		if (Ipv6::check_ipv6(substr($ihost, 1, -1))) {
			$this->ihost = '[' . Ipv6::compress(substr($ihost, 1, -1)) . ']';
		}
		else {
			$this->ihost = null;
			return false;
		}
	}
	else {
		$ihost = $this->replace_invalid_with_pct_encoding($ihost, '!$&\'()*+,;=');

		// Lowercase, but ignore pct-encoded sections (as they should
		// remain uppercase). This must be done after the previous step
		// as that can add unescaped characters.
		$position = 0;
		$strlen = strlen($ihost);
		while (($position += strcspn($ihost, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ%', $position)) < $strlen) {
			if ($ihost[$position] === '%') {
				$position += 3;
			}
			else {
				$ihost[$position] = strtolower($ihost[$position]);
				$position++;
			}
		}

		$this->ihost = $ihost;
	}

	$this->scheme_normalization();

	return true;
}

User Contributed Notes

You must log in before being able to contribute a note or feedback.