Skip to content

Commit 7039931

Browse files
authored
Merge pull request #967 from nextcloud/fix/572/replace-iconv
fix(Resolver): replace iconv
2 parents 5988003 + f57bb6c commit 7039931

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

lib/UserResolver.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,15 @@ protected function sanitizeUserIdCandidate(string $rawUidCandidate): string {
7373
//FIXME: adjusted copy of LDAP's Access::sanitizeUsername(), should go to API
7474
$sanitized = trim($rawUidCandidate);
7575

76-
// Transliteration to ASCII
77-
$transliterated = @iconv('UTF-8', 'ASCII//TRANSLIT', $sanitized);
78-
if ($transliterated !== false) {
79-
// depending on system config iconv can work or not
80-
$sanitized = $transliterated;
81-
}
76+
// Use htmlentities to get rid of accents
77+
$sanitized = htmlentities($sanitized, ENT_NOQUOTES, 'UTF-8');
78+
79+
// Remove accents
80+
$sanitized = preg_replace('#&([A-Za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $sanitized);
81+
// Remove ligatures
82+
$sanitized = preg_replace('#&([A-Za-z]{2})(?:lig);#', '\1', $sanitized);
83+
// Remove unknown leftover entities
84+
$sanitized = preg_replace('#&[^;]+;#', '', $sanitized);
8285

8386
// Replacements
8487
$sanitized = str_replace(' ', '_', $sanitized);

0 commit comments

Comments
 (0)