2010-07-29 84 views
1

我试图通过PHP来添加Active Directory记录。 CN包含一个撇号(单引号),我试图找到正确的方法来逃避它。ldap_add:无效的语法

事情我已经尝试:

$dn = "CN=Conan O'Brien,OU=test,DC=test"; 
ldap_add($link_id, $dn, $attributes); 
ldap_add($link_id, addslashes($dn), $attributes); 
ldap_add($link_id, str_replace("'", "\\39", $dn), $attributes); 

每个人给出了同样的错误。显然,我已验证此代码在DN中没有撇号。

ldap_add(): Add: Invalid syntax 
+0

我认为普通的旧\“和\\”已经尝试没有成功? – Charles 2010-07-29 19:38:41

+0

通常在LDAP中是'\''来完成所需的转义。 – geoffc 2010-07-30 02:08:58

+0

addslashes将'转换为'。我已经使用printf验证了这一点。所以是的,我试过了;这是我的中间情况。我也试过没有成功。 – 2010-07-30 03:29:53

回答

0

您需要使用两个撇号而不是一个撇号。这是因为一个人逃避了另一个。

的\转义用于特殊字符(“”‘’‘=’等...)和十六进制编码的字符,当该值没有字符串表示其中使用。