poletaew/sms-segment-calculator

PHP-based tool to calculate and display SMS segmentation data for a given message body

1.0.0 2024-05-22 11:52 UTC

This package is auto-updated.

Last update: 2025-07-22 19:11:12 UTC


README

A PHP library that enables you to calculate the message segments used for sending a message on the GSM network. A port of Twillio's Segment Calculator.

Usage

Installation

composer require poletaew/sms-segment-calculator

Sample usage

use Poletaew\SmsSegmentCalculator\Models\SegmentedMessage;

$segmentedMessage = new SegmentedMessage('Hello World');

echo $segmentedMessage->getRealEncodingName() . PHP_EOL; // "GSM-7"
echo $segmentedMessage->getSegmentsCount(); // "1"

Documentation

SegmentedMessage class

This is the main class exposed by the package

__construct($message, $encoding, $smartEncoding)

Arguments:

  • $message: Body of the SMS
  • $encoding: Optional: encoding. It can be SmsEncoding enum value or auto. Default value: auto
  • $smartEncoding: Optional: if smart encoding enabled. Default value: false

getRealEncodingName()

Returns the name of the calculated encoding for the message: GSM-7 or UCS-2

getTotalSize()

Total size of the message in bits (including User Data Header if present)

getMessageSize()

Total size of the message in bits (excluding User Data Header if present)

getSegmentsCount()

Number of segment(s)

getNonGsmCharacters()

Return an array with the non GSM-7 characters in the body. It can be used to replace character and reduce the number of segments

getNumberOfUnicodeScalars()

Number of Unicode scalars

getNumberOfCharacters()

Number of characters

Contributing

This code is open source and welcomes contributions.

The source code for the library is all contained in the src folder. Before submitting a PR run Unit test in the directory test/Unit and make sure all tests pass.

License

MIT

Disclaimer

No warranty expressed or implied. Software is as is.