function set_authority($authority)
{
if (($userinfo_end = strrpos($authority, '@')) !== false) {
$userinfo = substr($authority, 0, $userinfo_end);
$authority = substr($authority, $userinfo_end + 1);
} else {
$userinfo = null;
}
if (($port_start = strpos($authority, ':')) !== false) {
$port = substr($authority, $port_start + 1);
$authority = substr($authority, 0, $port_start);
} else {
$port = null;
}
return $this->set_userinfo($userinfo) && $this->set_host($authority) && $this->set_port($port);
}