関数・クラス解説
dns_get_record
version:PHP 5, PHP 7 (公式)ホスト名に関連する DNS リソースレコードを取得する
公式リファレンス
書式
dns_get_record ( string $hostname [, int $type = DNS_ANY [, array &$authns [, array &$addtl [, bool $raw = FALSE ]]]] ) : array|false
説明
指定した hostname に関連づけられた DNS リソースレコードを取得します。
パラメータ
- hostname
- hostname は、正しい DNS ホスト名、すなわち "www.example.com" のようなものでなければなりません。 in-addr.arpa 形式の表記を用いた逆引き検索は可能ですが、 たいていは gethostbyaddr() を用いるほうが適当です。
注意: DNS の標準規格により、メールアドレスは user.host 形式で渡されます (たとえば、hostmaster.example.com が hostmaster@example.com の代わりとなります)。 この値をしっかり確認し、mail() のような関数で 利用する前には必要なら変更を加えることを忘れないようにしてください。
- type
- デフォルトでは、dns_get_record() は hostname に関連するすべてのリソースレコードを検索します。 これを制限するには、オプションの type パラメータを指定してください。 type は以下のうちのいずれかです。 DNS_A, DNS_CNAME, DNS_HINFO, DNS_CAA, DNS_MX, DNS_NS, DNS_PTR, DNS_SOA, DNS_TXT, DNS_AAAA, DNS_SRV, DNS_NAPTR, DNS_A6, DNS_ALL または DNS_ANY。
注意: プラットフォーム依存の libresolv のおかしな挙動のせいで、 DNS_ANY が常にすべてのレコードを返すとは 限りません。速度は遅くなりますが、DNS_ALL のほうがより確実にすべてのレコードを取得できます。
注意: DNS_CAA は、Windows ではサポートされていません。
- authns
- 参照で渡し、 Authoritative Name Servers のリソースレコードが格納されます。
- addtl
- 参照で渡し、 Additional Records が格納されます。
- raw
- type は生のDNSのタイプIDとして解釈されます。 (DNS_* 定数は使えません) 戻り値には手動でパースが必要な data キーが含まれます。
返値
この関数は、連想配列を要素にもつ配列を返します。 失敗した場合に FALSE を返します。 それぞれの連想配列には 少なくとも 以下のキーが含まれています:
属性 | 意味 |
---|---|
host | これ以降の関連するデータが参照する DNS 名。 |
class | dns_get_record() は Internet クラスのレコードのみを返すので、このパラメータは常に IN を返します。 |
type | レコード型を表す文字列。type の値に応じて、 結果の配列には追加の属性が含まれます。以下の表を参照ください。 |
ttl | このレコードの"有効期限 (Time To Live)"。レコードの本来の ttl と一致するとは 限りません。むしろ、 ネームサーバーへのクエリにかかった時間をそこから引いたものに一致します。 |
レコード型 | 追加項目 |
---|---|
A | ip: ドット区切り 10 進数形式の IPv4 アドレス。 |
MX | pri: メールエクスチェンジャの優先度。 数字が小さいほど優先度が高い。 target: メールエクスチェンジャの FQDN 。 dns_get_mx() も参照ください。 |
CNAME | target: レコードのエイリアスの対象となっている場所の FQDN 。 |
NS | target: このホスト名に対する権威をもっているネームサーバーの FQDN 。 |
PTR | target: レコードが指している、DNS 名前空間内の場所 |
TXT | txt: このレコードに関連付けられている任意の文字列。 |
HINFO | cpu: このレコードが参照しているマシンの CPU を識別する IANA 番号。 os: このレコードが参照しているマシン上の OS を識別する IANA 番号。 これらの値の意味については、IANA の » Operating System Names を参照ください。 |
CAA | flags: 1バイトのビットフィールド; 現在はビット0だけが定義されており、'critical' を意味します。 他のビットは予約されており、無視されるべきです。 tag: CAA タグの名前 (alphanumeric な ASCII 文字列). value: CAA タグの値 (バイナリ文字列, サブフォーマットの使用可) 詳細は、» RFC 6844 を参照ください。 |
SOA | mname: リソースレコードの元となるマシンの FQDN 。 rname: このドメインの管理責任者の Email アドレス。 serial: ドメインのシリアル番号。 refresh: セカンダリネームサーバーがこのドメインのコピーを更新する際に参照するリフレッシュ間隔(秒単位)。 retry: リフレッシュが失敗した際に 2 度目のリフレッシュを試みるまでの間隔(秒単位) expire: セカンダリネームサーバーが、ゾーンデータの リフレッシュに失敗した場合にコピーのデータを破棄せず持ち続ける期間 (秒単位)。 minimum-ttl: クライアントが、 一度取得したデータを再リクエストすることなしに利用できる最小期間(秒単位)。 個々のリソースレコードによって上書きが可能。 |
AAAA | ipv6: IPv6 アドレス。 |
A6(PHP >= 5.1.0) | masklen: chain で指定された対象から引き継ぐビット長。 ipv6: chain とマージするためのこのレコードのアドレス。 chain: ipv6 データとマージするための親レコード。 |
SRV | pri: (Priority) 値が小さいものが優先されます。 weight: 同じ優先順位の targets からランダムに選択する際の重み。 target および port: リクエストされたサービスが存在するホスト名とポート。 詳細は » RFC 2782 を参照ください。 |
NAPTR | order および pref: 上の pri および weight と同じ。 flags, services, regex, および replacement: » RFC 2915 で定義されるパラメータ。 |
注意
注意: PHP 5.3.0 より前のバージョンでは、OS によってはこの関数が実装されていませんでした。 そのような環境との互換生を保つには、 » PEAR の » Net_DNS クラスを使いましょう。
更新履歴
バージョン | 説明 |
---|---|
7.0.16, 7.1.2 | CAA レコード型のサポートが追加されました。 |
サンプル
例1 dns_get_record() の使用
$result = dns_get_record("php.net");
print_r($result);
上の例の出力は、たとえば以下のようになります。
Array
(
[0] => Array
(
[host] => php.net
[type] => MX
[pri] => 5
[target] => pair2.php.net
[class] => IN
[ttl] => 6765
)
[1] => Array
(
[host] => php.net
[type] => A
[ip] => 64.246.30.37
[class] => IN
[ttl] => 8125
)
)
例2 dns_get_record() と DNS_ANY の使用
MX レコードが解決されれば、たいていはメールサーバーの IP アドレスを 取得したくなるものです。そのため、dns_get_record() は addtl に関連するレコードを含めて返します。 また、authns には 権威のあるネームサーバーのリストを含めて返します。
/* php.net の "ANY" レコードを要求し、
それに付随する情報を格納した配列を
作成する。
$authns にはネームサーバーの一覧が、
また $addtl には追加レコードが
それぞれ格納される。 */
$result = dns_get_record("php.net", DNS_ANY, $authns, $addtl);
echo "Result = ";
print_r($result);
echo "Auth NS = ";
print_r($authns);
echo "Additional = ";
print_r($addtl);
上の例の出力は、たとえば以下のようになります。
Result = Array
(
[0] => Array
(
[host] => php.net
[type] => MX
[pri] => 5
[target] => pair2.php.net
[class] => IN
[ttl] => 6765
)
[1] => Array
(
[host] => php.net
[type] => A
[ip] => 64.246.30.37
[class] => IN
[ttl] => 8125
)
)
Auth NS = Array
(
[0] => Array
(
[host] => php.net
[type] => NS
[target] => remote1.easydns.com
[class] => IN
[ttl] => 10722
)
[1] => Array
(
[host] => php.net
[type] => NS
[target] => remote2.easydns.com
[class] => IN
[ttl] => 10722
)
[2] => Array
(
[host] => php.net
[type] => NS
[target] => ns1.easydns.com
[class] => IN
[ttl] => 10722
)
[3] => Array
(
[host] => php.net
[type] => NS
[target] => ns2.easydns.com
[class] => IN
[ttl] => 10722
)
)
Additional = Array
(
[0] => Array
(
[host] => pair2.php.net
[type] => A
[ip] => 216.92.131.5
[class] => IN
[ttl] => 6766
)
[1] => Array
(
[host] => remote1.easydns.com
[type] => A
[ip] => 64.39.29.212
[class] => IN
[ttl] => 100384
)
[2] => Array
(
[host] => remote2.easydns.com
[type] => A
[ip] => 212.100.224.80
[class] => IN
[ttl] => 81241
)
[3] => Array
(
[host] => ns1.easydns.com
[type] => A
[ip] => 216.220.40.243
[class] => IN
[ttl] => 81241
)
[4] => Array
(
[host] => ns2.easydns.com
[type] => A
[ip] => 216.220.40.244
[class] => IN
[ttl] => 81241
)
)
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール