Files
boursecu_server/app/Services/SmsBilling/SmsSegmentCalculator.php
T
2026-07-04 11:55:10 +03:30

38 lines
764 B
PHP

<?php
namespace App\Services\SmsBilling;
class SmsSegmentCalculator
{
private const PERSIAN_LIMITS = [70, 64, 67];
public function countParts(string $text): int
{
$length = mb_strlen(trim($text), 'UTF-8');
if ($length <= 0) {
return 0;
}
$first = self::PERSIAN_LIMITS[0];
$second = self::PERSIAN_LIMITS[1];
$rest = self::PERSIAN_LIMITS[2];
if ($length <= $first) {
return 1;
}
if ($length <= $first + $second) {
return 2;
}
$thirdThreshold = $first + $second + $rest;
if ($length <= $thirdThreshold) {
return 3;
}
return 3 + (int) ceil(($length - $thirdThreshold) / $rest);
}
}