Th следующий будет делать то, что вы хотите.
function ssubstr($string, $start, $end) {
if ($end < 0) $length = strlen($string) + $end;
else $length = $end - $start;
return substr($string, $start, $length);
}
Этот метод безопасен для отрицательных значений $end
.
Обратите внимание, что он не выполняет никакой проверки ошибок