@@ -27,18 +27,19 @@ final class MbStrFunctionsFixer extends AbstractFunctionReferenceFixer
2727 /**
2828 * @var array the list of the string-related function names and their mb_ equivalent
2929 */
30- private static $ functions = [
30+ private static $ functionsMap = [
31+ 'str_split ' => ['alternativeName ' => 'mb_str_split ' , 'argumentCount ' => [1 , 2 , 3 ]],
32+ 'stripos ' => ['alternativeName ' => 'mb_stripos ' , 'argumentCount ' => [2 , 3 ]],
33+ 'stristr ' => ['alternativeName ' => 'mb_stristr ' , 'argumentCount ' => [2 , 3 ]],
3134 'strlen ' => ['alternativeName ' => 'mb_strlen ' , 'argumentCount ' => [1 ]],
3235 'strpos ' => ['alternativeName ' => 'mb_strpos ' , 'argumentCount ' => [2 , 3 ]],
36+ 'strrchr ' => ['alternativeName ' => 'mb_strrchr ' , 'argumentCount ' => [2 ]],
37+ 'strripos ' => ['alternativeName ' => 'mb_strripos ' , 'argumentCount ' => [2 , 3 ]],
3338 'strrpos ' => ['alternativeName ' => 'mb_strrpos ' , 'argumentCount ' => [2 , 3 ]],
34- 'substr ' => ['alternativeName ' => 'mb_substr ' , 'argumentCount ' => [2 , 3 ]],
39+ 'strstr ' => ['alternativeName ' => 'mb_strstr ' , 'argumentCount ' => [2 , 3 ]],
3540 'strtolower ' => ['alternativeName ' => 'mb_strtolower ' , 'argumentCount ' => [1 ]],
3641 'strtoupper ' => ['alternativeName ' => 'mb_strtoupper ' , 'argumentCount ' => [1 ]],
37- 'stripos ' => ['alternativeName ' => 'mb_stripos ' , 'argumentCount ' => [2 , 3 ]],
38- 'strripos ' => ['alternativeName ' => 'mb_strripos ' , 'argumentCount ' => [2 , 3 ]],
39- 'strstr ' => ['alternativeName ' => 'mb_strstr ' , 'argumentCount ' => [2 , 3 ]],
40- 'stristr ' => ['alternativeName ' => 'mb_stristr ' , 'argumentCount ' => [2 , 3 ]],
41- 'strrchr ' => ['alternativeName ' => 'mb_strrchr ' , 'argumentCount ' => [2 ]],
42+ 'substr ' => ['alternativeName ' => 'mb_substr ' , 'argumentCount ' => [2 , 3 ]],
4243 'substr_count ' => ['alternativeName ' => 'mb_substr_count ' , 'argumentCount ' => [2 , 3 , 4 ]],
4344 ];
4445
@@ -85,8 +86,15 @@ public function isCandidate(Tokens $tokens)
8586 */
8687 protected function applyFix (\SplFileInfo $ file , Tokens $ tokens )
8788 {
89+ $ functions = array_filter (
90+ self ::$ functionsMap ,
91+ static function ($ mapping ) {
92+ return \function_exists ($ mapping ['alternativeName ' ]);
93+ }
94+ );
95+
8896 $ argumentsAnalyzer = new ArgumentsAnalyzer ();
89- foreach (self :: $ functions as $ functionIdentity => $ functionReplacement ) {
97+ foreach ($ functions as $ functionIdentity => $ functionReplacement ) {
9098 $ currIndex = 0 ;
9199 while (null !== $ currIndex ) {
92100 // try getting function reference and translate boundaries for humans
0 commit comments