Как сформировать ldap_search с кириллицей на php?

Для формирования поискового запроса ldap_search с кириллицей на PHP, необходимо учесть несколько моментов.

  1. Установите правильные кодировки:

Перед тем, как выполнять ldapsearch, убедитесь, что кодировки установлены правильно. Для работы с кириллицей на PHP рекомендуется использовать кодировку UTF-8. Можно установить ее с помощью функции mbinternal_encoding:

   mb_internal_encoding("UTF-8");
  1. Обратите внимание на правильные настройки соединения с LDAP-сервером:

Для подключения к LDAP-серверу на PHP, вы должны использовать функцию ldapconnect(). При этом, установите опцию LDAPOPTPROTOCOLVERSION равной 3, чтобы использовать протокол LDAP версии 3. Параметр "LDAPOPTREFERRALS" должен быть установлен в 0 для отключения рефералов ldap_search.

   $ldapconn = ldap_connect("ldap.example.com");
   ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
   ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
  1. Создайте фильтр для поиска с кириллицей:

При формировании фильтра для ldapsearch с кириллицей, необходимо учитывать, что символы кириллицы в фильтре должны быть в кодировке UTF-8. Для этого можно использовать функцию mbconvert_encoding:

   $filter = "(cn=" . mb_convert_encoding("Василий", "UTF-8") . ")";
  1. Выполните ldap_search:

После подготовки правильного фильтра и параметров соединения, выполните ldap_search с использованием фильтра, базового днс (DN) и массива атрибутов:

   $basedn = "dc=example,dc=com";
   $attributes = array("cn", "email");
   $result = ldap_search($ldapconn, $basedn, $filter, $attributes);
  1. Обработайте результаты поиска:

Получите результаты поиска с помощью функции ldapgetentries и обработайте их соответствующим образом:

   $entries = ldap_get_entries($ldapconn, $result);
   for ($i = 0; $i < $entries["count"]; $i++) {
       $cn = $entries[$i]["cn"][0];
       $email = $entries[$i]["email"][0];
       echo "CN: " . $cn . " Email: " . $email . "<br />";
   }

Важно отметить, что конкретные настройки и параметры запроса ldapsearch будут зависеть от вашей конкретной ситуации и структуры вашего LDAP-каталога. Убедитесь, что правильно настроили параметры подключения, фильтры и атрибуты перед выполнением ldapsearch.