poletaew / sms-segment-calculator
PHP-based tool to calculate and display SMS segmentation data for a given message body
Requires
- php: ^8.1
- ext-intl: *
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ^10.1
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 beSmsEncoding
enum value orauto
. 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
Disclaimer
No warranty expressed or implied. Software is as is.