ドメイン名が利用可能かチェックするのに dns_get_record 関数を使います。
パラメータには url か domain.com のようなドメイン名
結果はテキストで OK か NG を返します。
<?php $url = $_GET["url"]; $res = parse_url($url); $name = ""; if (isset($res['host'])) { $name = $res['host']; } else if (isset($res['path'])) { $name = $res['path']; } header('Content-type: plain/text'); if (!empty($name)) { $result = dns_get_record($name); if ($result === false || empty($result)) { echo 'NG'; } else { echo 'OK'; } } else { echo 'ERR'; } exit; ?>
このPHPスクリプトをエクセルVBAから呼び出す例:
' ' ドメインチェック WebAPI ' ' URL: https://www.northwind.mydns.jp/samples/webservice/checkdomain.php ' パラメータ: url ' レスポンス: ' OK: 利用可能 ' NG: 利用不可 ' ' Ex. ' IsDomainAvailable("northwind.mydns.jp") = True ' ' Function IsDomainAvailable(DomainUrl As String) As Boolean On Error GoTo ErrHandler Dim Request As Object Dim checkerUrl As String IsDomainAvailable = False checkerUrl = "https://www.northwind.mydns.jp/samples/webservice/checkdomain.php" Set Request = CreateObject("WinHttp.WinHttpRequest.5.1") With Request .Open "GET", checkerUrl & "?url=" & DomainUrl, False .send If .StatusText = "OK" And .ResponseText = "OK" Then IsDomainAvailable = True End If End With Set Request = Nothing Exit Function ErrHandler: Debug.Print Err.Number & ": " & Err.Description End Function Sub Test() Debug.Print IsDomainAvailable("northwind.mydns.jp") End Sub