characterCount($message); if ($length === 0) { return 0; } if ($this->isGsm7($message)) { if ($length <= self::GSM_SINGLE_LIMIT) { return 1; } return (int) ceil($length / self::GSM_MULTI_LIMIT); } if ($length <= self::UCS2_SINGLE_LIMIT) { return 1; } return (int) ceil($length / self::UCS2_MULTI_LIMIT); } public function summary(string $message): string { $characters = $this->characterCount($message); $parts = $this->estimatedParts($message); if ($parts === 0) { return '0 characters'; } $partLabel = $parts === 1 ? '1 SMS' : "{$parts} SMS"; return "{$characters} characters ยท {$partLabel}"; } }