ldap_escape

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

ldap_escape转义用于 LDAP 过滤器或 DN 的字符串

描述

ldap_escape(string $value, string $ignore = "", int $flags = 0): string

转义 value 以在 flags 隐含的上下文中使用。

参数

value

要转义的值。

ignore

转义时要忽略的字符。

flags

转义字符串将使用的上下文:LDAP_ESCAPE_FILTER 用于与 ldap_search() 一起使用的过滤器,或者 LDAP_ESCAPE_DN 用于 DN。如果两个标志都没有传递,则所有字符都会被转义。

返回值

返回转义后的字符串。

示例

构建 LDAP 过滤器时,应使用带 LDAP_ESCAPE_FILTER 标志的 ldap_escape。

示例 #1 搜索电子邮件地址

<?php
// $ds 是指向目录服务器的有效 LDAP\Connection 实例

// $mail 是用户在表单中提供的电子邮件地址

$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";
?>

添加备注

用户贡献的备注 2 条备注

support at extollit dot com
4 年前
假设您想反转操作,这是一种“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
8 年前
您可以这样使用它进行过滤

<?php
$badSearchInput
= 'Domain\username';

$escapedSearchInput = ldap_escape($badSearchInput, null, LDAP_ESCAPE_FILTER);
?>
To Top