File tree Expand file tree Collapse file tree 2 files changed +11
-13
lines changed
Expand file tree Collapse file tree 2 files changed +11
-13
lines changed Original file line number Diff line number Diff line change @@ -1433,12 +1433,15 @@ public function sanitizeUsername($name) {
14331433 return $ name ;
14341434 }
14351435
1436- // Transliteration to ASCII
1437- $ transliterated = @iconv ('UTF-8 ' , 'ASCII//TRANSLIT ' , $ name );
1438- if ($ transliterated !== false ) {
1439- // depending on system config iconv can work or not
1440- $ name = $ transliterated ;
1441- }
1436+ // Use htmlentities to get rid of accents
1437+ $ name = htmlentities ($ name , ENT_NOQUOTES , 'UTF-8 ' );
1438+
1439+ // Remove accents
1440+ $ name = preg_replace ('#&([A-Za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);# ' , '\1 ' , $ name );
1441+ // Remove ligatures
1442+ $ name = preg_replace ('#&([A-Za-z]{2})(?:lig);# ' , '\1 ' , $ name );
1443+ // Remove unknown leftover entities
1444+ $ name = preg_replace ('#&[^;]+;# ' , '' , $ name );
14421445
14431446 // Replacements
14441447 $ name = str_replace (' ' , '_ ' , $ name );
Original file line number Diff line number Diff line change @@ -689,16 +689,14 @@ public function testFetchListOfGroupsKnown() {
689689 }
690690
691691 public function intUsernameProvider () {
692- // system dependent :-/
693- $ translitExpected = @iconv ('UTF-8 ' , 'ASCII//TRANSLIT ' , 'fränk ' ) ? 'frank ' : 'frnk ' ;
694-
695692 return [
696693 ['alice ' , 'alice ' ],
697694 ['b/ob ' , 'bob ' ],
698695 ['charly🐬 ' , 'charly ' ],
699696 ['debo rah ' , 'debo_rah ' ],
700697 ['epost@poste.test ' , 'epost@poste.test ' ],
701- ['fränk ' , $ translitExpected ],
698+ ['fränk ' , 'frank ' ],
699+ [' UPPÉR Case/[\]^` ' , 'UPPER_Case ' ],
702700 [' gerda ' , 'gerda ' ],
703701 ['🕱🐵🐘🐑 ' , null ],
704702 [
@@ -732,9 +730,6 @@ public function groupIDCandidateProvider() {
732730 * @param $expected
733731 */
734732 public function testSanitizeUsername ($ name , $ expected ) {
735- if ($ name === 'fränk ' && PHP_MAJOR_VERSION > 7 ) {
736- $ this ->markTestSkipped ('Special chars do boom still on CI in php8 ' );
737- }
738733 if ($ expected === null ) {
739734 $ this ->expectException (\InvalidArgumentException::class);
740735 }
You can’t perform that action at this time.
0 commit comments