public function validate($input) : bool
{
// check by regular expression
if (preg_match("/^([a-z\\d](-*[a-z\\d])*)(\\.([a-z\\d](-*[a-z\\d])*))*\$/i", $input) && preg_match("/^.{1,253}\$/", $input) && preg_match("/^[^\\.]{1,63}(\\.[^\\.]{1,63})*\$/", $input)) {
// check by DNS record
if ($this->checkDns) {
return checkdnsrr($input, "A");
} else {
return true;
}
}
return false;
}