echo substr('こんにちは世界', 0, 5);
Output This may produce broken or garbled characters because substr() operates on byte offsets, potentially splitting multibyte characters in the middle.
echo mb_substr('こんにちは世界', 0, 5);
Output
mb_substr(
    string $string,
    int $start,
    ?int $length = null,
    ?string $encoding = null
): string
$originalString = 'こんにちは、はじめまして!';
$start = 3; // Starting from the 4th character (0-based index)
$length = 5; // Extract 5 characters

$extractedString = mb_substr($originalString, $start, $length);

echo 'Extracted substring: ' . $extractedString;
// Output: Extracted substring: ちは、はじ
$originalString = 'こんにちは、はじめまして!';
$start = -6; // Start 6 characters from the end
$length = 4; // Extract 4 characters

$extractedString = mb_substr($originalString, $start, $length);

echo 'Extracted substring: ' . $extractedString;
// Output: Extracted substring: じめまし