ldap_escape
(PHP 5 >= 5.6.0, PHP 7, PHP 8)
ldap_escape — LDAP フィルタまたは DN で使われる文字列をエスケープする
説明
flags
で指示されたコンテキストで使う
value
をエスケープします。
パラメータ
value
-
エスケープする値
ignore
-
エスケープする際に無視する文字
flags
-
エスケープされた文字列が使われるコンテクスト:
LDAP_ESCAPE_FILTER
は、 ldap_search(), で使われるフィルタ。LDAP_ESCAPE_DN
は DN の場合に使います。 フラグが渡されなかった場合、全ての文字がエスケープされます。
戻り値
エスケープされた値を返します。
例
LDAP フィルタを組み立てる際、 LDAP_ESCAPE_FILTER を指定して ldap_escape を使うべきです。
例1 Eメールアドレスを検索する
<?php
// $ds is a valid LDAP\Connection instance for a directory server
// $mail is an email address provided by the user in a form
$base = "o=My Company, c=US";
$filter = "(mail=".ldap_escape($mail, "", LDAP_ESCAPE_FILTER).")";
$sr = ldap_search($ds, $base, $filter, array("sn", "givenname", "mail"));
$info = ldap_get_entries($ds, $sr);
echo $info["count"]." entries returned\n";
?>
+add a note
User Contributed Notes 2 notes
support at extollit dot com ¶
4 years ago
Suppose you want to reverse the operation, here is a way to "ldap_unescape"
<?php
function ldap_unescape($string) {
return
preg_replace_callback(
"/\\\\[\da-z]{2}/",
function ($matches) {
$match = array_shift($matches);
return hex2bin(substr($match, 1));
},
$string
);
}
$result = ldap_unescape("uid=\\61\\6c\\70\\68\\6f\\6e\\7a\\6f,ou=people,dc=foo,dc=com"); // uid=alphonzo,ou=people,dc=foo,dc=com
?>
martin dot keckeis1 at gmail dot com ¶
9 years ago
You can use it like this for filtering
<?php
$badSearchInput = 'Domain\username';
$escapedSearchInput = ldap_escape($badSearchInput, null, LDAP_ESCAPE_FILTER);
?>
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google