echo substr('こんにちは世界', 0, 5);
出力結果 マルチバイト文字の途中で切り取ると、文字化けが発生する可能性があります。
echo mb_substr('こんにちは世界', 0, 5);
出力結果
mb_substr(
    string $string,
    int $start,
    ?int $length = null,
    ?string $encoding = null
): string
$originalString = 'こんにちは、はじめまして!'; 
$start = 3; // 開始位置
$length = 5; // 抽出する長さ

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

echo '抽出された文字列: ' . $extractedString; // 出力例: '抽出された文字列: ちは、はじ'
$originalString = 'こんにちは、はじめまして!';
$startNegative = -10; // 末尾から10文字目から開始
$length = 5; // 抽出する長さ

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

echo '抽出された文字列: ' . $extractedString; // 出力例: '抽出された文字列: ちは、はじ'