int ldap_search
(int link_identifier, string base_dn, string filter, array
[attributes]);サーチ結果 ID を返します。エラーの場合に FALSE を返します。
ldap_search() は、 LDAP_SCOPE_SUBTREE のスコープを有するディレクトリに関して、 指定されたフィルタにより検索を行います。 これは、ディレクトリ全体を探索することと等価です。 base_dn はディレクトリのベース DN を指定します。
サーバーから返される属性と値を必要なものだけに制限するために オプションの4番目のバラメータを指定することができます。 これは、(全ての属性と関連する値を返す)デフォルトの動作よりも かなり効率的です。 このため、4番目のパラメータを使用することが望ましいです。
4番目のパラメータは、array("mail","sn","cn") のような 必要な属性を保持する通常の PHP 文字列配列です。 "dn" は要求された属性の型によらず常に返されることに注意して下さい。
いくつかのディレクトリサーバーホストが返すエントリは、事前に指定された エントリ数を超えないように設定されています。 このような場合、サーバーは結果セットの一部のみを返すことがあります。
検索フィルターは、 LDAP ドキュメントに記述されたフォーマットの論理演算子を用いて、 簡単なものまたは先進的なものとすることができます。 (フィルターに関する詳細な情報については、 Netscape Directory SDK を参照下さい)
以下の例は、"My Company" の全員について 姓または名に部分文字列 $person を含まれる 組織単位、姓、名、電子メールアドレスを取得します。 この例は、複数の属性に関する情報についてサーバーに 検索をかける論理フィルターを使用します。
例 1. LDAP 検索
// $ds は、ディレクトリサーバーの有効なリンク ID // $person は、人名またはその一部。例 "Jo" $dn = "o=My Company, c=US"; $filter="(|(sn=$person*)(givenname=$person*))"; $justthese = array( "ou", "sn", "givenname", "mail"); $sr=ldap_search($ds, $dn, $filter, $justthese); $info = ldap_get_entries($ds, $sr); print $info["count"]." 個のエントリが返されました<p>";