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 @@ -688,16 +688,14 @@ public function testFetchListOfGroupsKnown() {
688688 }
689689
690690 public function intUsernameProvider () {
691- // system dependent :-/
692- $ translitExpected = @iconv ('UTF-8 ' , 'ASCII//TRANSLIT ' , 'fränk ' ) ? 'frank ' : 'frnk ' ;
693-
694691 return [
695692 ['alice ' , 'alice ' ],
696693 ['b/ob ' , 'bob ' ],
697694 ['charly🐬 ' , 'charly ' ],
698695 ['debo rah ' , 'debo_rah ' ],
699696 ['epost@poste.test ' , 'epost@poste.test ' ],
700- ['fränk ' , $ translitExpected ],
697+ ['fränk ' , 'frank ' ],
698+ [' UPPÉR Case/[\]^` ' , 'UPPER_Case ' ],
701699 [' gerda ' , 'gerda ' ],
702700 ['🕱🐵🐘🐑 ' , null ],
703701 [
@@ -731,9 +729,6 @@ public function groupIDCandidateProvider() {
731729 * @param $expected
732730 */
733731 public function testSanitizeUsername ($ name , $ expected ) {
734- if ($ name === 'fränk ' && PHP_MAJOR_VERSION > 7 ) {
735- $ this ->markTestSkipped ('Special chars do boom still on CI in php8 ' );
736- }
737732 if ($ expected === null ) {
738733 $ this ->expectException (\InvalidArgumentException::class);
739734 }
You can’t perform that action at this time.
0 commit comments