TLD는 얼마나 오래 걸릴 수 있습니까?
PHP에서 이메일 유효성 검사 정규식을 작업 중이며 TLD가 얼마나 오래 유효하고 여전히 유효한지 알아야합니다. 몇 번 검색했지만 주제에 대한 많은 정보를 찾을 수 없었습니다. 그렇다면 TLD는 얼마나 오래 걸릴 수 있습니까?
DNS는 개별 레이블에 대해 최대 63자를 허용합니다.
현재 존재하는 가장 긴 TLD는 24 자이며 변경 될 수 있습니다. RFC 1034에 지정된 최대 TLD 길이 는 63 옥텟입니다.
가장 긴 기존 TLD의 길이를 얻으려면 :
wget -qO - http://data.iana.org/TLD/tlds-alpha-by-domain.txt | tail -n+2 | wc -L
이 명령이 수행하는 작업은 다음과 같습니다.
curlStefan 덕분에 대체 사용 :
curl -s http://data.iana.org/TLD/tlds-alpha-by-domain.txt | tail -n+2 | wc -L
-편집하다-
RFC 2606에 따르면 .localhost는 예약 된 도메인 이름이며 길이는 9 자입니다. 그것이 내가 아는 가장 긴 시간입니다.
-편집 끝-
그러나 TLD 길이뿐만 아니라 이메일 주소 길이에도 신경을 써야한다고 생각합니다. 아래는 이 기사 의 인용문입니다 . 이메일 주소 길이는 254 자입니다.
최대 유효한 이메일 주소 크기에 대해 약간의 혼동이있는 것 같습니다. 대부분의 사람들은 320 자 (사용자 이름 64 자 + 도메인 255 자 + @ 기호 1 자)라고 생각합니다. 다른 출처에서는 129 (64 + 1 + 64) 또는 384 (128 + 1 + 255, 사용자 이름의 길이가 앞으로 두 배가된다고 가정)를 제안합니다.
이러한 혼동은 '견고성 원칙'에 유의해야 함을 의미합니다 ( "개발자는 기존 RFC를 밀접하게 준수하는 소프트웨어를 신중하게 작성해야하지만 해당 RFC와 일치하지 않을 수있는 동료의 입력을 수락하고 구문 분석해야합니다."- Wikipedia ) . 이메일 주소. 또한 일부 소프트웨어는 순진한 가정에 의해 손상 될 수 있습니다. 예를 들어 50 자이면 충분하다고 생각합니다 ( 예 ). 200 자 이메일 주소는 기술적으로 유효 할 수 있지만 대부분의 웹 사이트 나 응용 프로그램에서 거부하는 경우 도움이되지 않습니다.
실제 최대 이메일 길이는 현재 254 자입니다.
" RFC 3696 의 원래 버전 은 실제로 320이 최대 길이라고 말했지만 John Klensin (ICANN)은 나중에 이것이 잘못되었다고 받아 들였습니다."
"이는 도메인의 최대 길이 (255 자) + 사서함의 최대 길이 (64 자) + @ 기호 = 320 자의 간단한 산술로 인해 발생합니다. 잘못되었습니다.이 카나드는 실제로 RFC3696 의 원본 버전에 문서화되어 있습니다. 정오표에서 수정되었습니다. 실제로 SMTP 트랜잭션의 경로 요소에 256 자의 RFC5321 제한 이 있습니다. 그러나 여기에는 이메일 주소 주변에 꺾쇠 괄호가 포함되어 있으므로 이메일 주소의 최대 길이는 254 자입니다. "
라틴 문자로 된 가장 긴 것은 .MUSEUM ( source )이지만 일부는 특수 문자가 있습니다. 가장 긴 것은 XN--CLCHC0EA0B2G2A9GCD입니다. 또한 단시간에 자신의 TLD를 높은 가격으로 예약 할 수있어 더 길어질 수 있습니다.
다음은 정규식에서 직접 사용할 PHP최신 세로 막대로 구분 된 UTF-8TLD 목록 을 가져 오는 코드입니다 .
<?php
function getTLDs($separator){
$tlds=file('http://data.iana.org/TLD/tlds-alpha-by-domain.txt');
array_shift($tlds); // remove heading comment
usort($tlds,function($a,$b){ return strlen($b)-strlen($a); }); // sort from longest to shortest
return implode($separator,array_map(function($e){ return idn_to_utf8(trim(strtolower($e))); },$tlds));
}
echo getTLDs('|');
?>
여기 에서 실제 동작을 볼 수 있습니다 .
호스트 이름을 일치 시키려면 다음과 같이 사용할 수 있습니다.
$tlds=getTLDs('|');
if (preg_match("{([\da-z\.-]+)\.($tlds)}u",$address)) {
..
}
나는 .net 개발자이기 때문에 현재 사용 가능한 가장 긴 TLD를 결정하는 자바 스크립트 표현입니다. 이것은 RegEx에서 사용할 수있는 가장 긴 TLD의 길이를 반환합니다.
다음 코드 조각을 시도하십시오
function getTLD() {
var length = 0;
var longest;
var request = new XMLHttpRequest();
request.open('GET', 'http://data.iana.org/TLD/tlds-alpha-by-domain.txt', true);
request.send(null);
request.onreadystatechange = function () {
if (request.readyState === 4 && request.status === 200) {
var type = request.getResponseHeader('Content-Type');
if (type.indexOf("text") !== 1) {
var tldArr = request.responseText.split('\n');
tldArr.splice(0, 1);
for (var i = 0; i < tldArr.length; i++) {
if (tldArr[i].length > length) {
length = tldArr[i].length;
longest = tldArr[i];
}
}
console.log("Longest >> " + longest + " >> " + length);
return length;
}
}
}
}
<button onclick="getTLD()">Get TLD</button>
참고URL : https://stackoverflow.com/questions/9238640/how-long-can-a-tld-possibly-be
'program story' 카테고리의 다른 글
| GUID가 GUID인지 확인하는 방법 (0) | 2020.11.04 |
|---|---|
| 조각 셰이더에 값 목록 전달 (0) | 2020.11.04 |
| Symfony 2에 JSON 객체 게시 (0) | 2020.11.04 |
| $ http는 요청에서 쿠키를 보내지 않습니다. (0) | 2020.11.04 |
| Windows에서 Ubuntu 하위 시스템으로 파일 복사 (0) | 2020.11.04 |