diff --git a/apps/testing/lib/Provider/FakeTextProcessingProvider.php b/apps/testing/lib/Provider/FakeTextProcessingProvider.php index 7a318196ab3d2..ffa7d16ef242e 100644 --- a/apps/testing/lib/Provider/FakeTextProcessingProvider.php +++ b/apps/testing/lib/Provider/FakeTextProcessingProvider.php @@ -18,10 +18,21 @@ public function getName(): string { } public function process(string $prompt): string { - return strrev($prompt) . ' (done with FakeTextProcessingProvider)'; + return $this->mb_strrev($prompt) . ' (done with FakeTextProcessingProvider)'; } public function getTaskType(): string { return FreePromptTaskType::class; } + + /** + * Reverse a miltibyte string. + * + * @param string $string The string to be reversed. + * @return string The reversed string + */ + private function mb_strrev(string $string): string { + $chars = mb_str_split($string, 1); + return implode('', array_reverse($chars)); + } } diff --git a/apps/testing/lib/Provider/FakeTextProcessingProviderSync.php b/apps/testing/lib/Provider/FakeTextProcessingProviderSync.php index f6fe63c0f8275..55c0cfef3bfe7 100644 --- a/apps/testing/lib/Provider/FakeTextProcessingProviderSync.php +++ b/apps/testing/lib/Provider/FakeTextProcessingProviderSync.php @@ -20,7 +20,7 @@ public function getName(): string { } public function process(string $prompt): string { - return strrev($prompt) . ' (done with FakeTextProcessingProviderSync)'; + return $this->mb_strrev($prompt) . ' (done with FakeTextProcessingProviderSync)'; } public function getTaskType(): string { @@ -30,4 +30,15 @@ public function getTaskType(): string { public function getExpectedRuntime(): int { return 1; } + + /** + * Reverse a miltibyte string. + * + * @param string $string The string to be reversed. + * @return string The reversed string + */ + private function mb_strrev(string $string): string { + $chars = mb_str_split($string, 1); + return implode('', array_reverse($chars)); + } }