phlib/sms-length
, (*1)
Calculate SMS GSM 03.38 message encoding and length, and number of concatenated SMS required, (*2)
Installation
composer require phlib/sms-length
Usage
Simple string which fits within GSM 03.38 7-bit alphabet:, (*3)
$smsLength = new \Phlib\SmsLength\SmsLength('simple message');
$smsLength->validate(); // Throw exceptions for any validation failures
$smsLength->getSize(); // 14
$smsLength->getEncoding(); // '7-bit'
$smsLength->getMessageCount(); // 1
$smsLength->getUpperBreakpoint(); // 160
Message which contains characters forcing switch to using GSM 03.38 UCS-2:, (*4)
$smsLength = new \Phlib\SmsLength\SmsLength('message with • char requiring UCS-2');
$smsLength->validate(); // Throw exceptions for any validation failures
$smsLength->getSize(); // 35
$smsLength->getEncoding(); // 'ucs-2'
$smsLength->getMessageCount(); // 1
$smsLength->getUpperBreakpoint(); // 70
Background
In the course of adding an SMS module to our Commercial software, we have found
need for the SMS length properties which we've included in this package., (*5)
Our third-party SMS gateway provider's API will of course error if the message
length exceeds the maximum allowed, and handles the correct concatenation and
encoding for the given UTF-8 string., (*6)
However we want to be able to inform our users of message size and limits while
they're building their SMS campaign (in advance of a live send). Plus we also
need to show how many concatenated SMS they will use per contact, and therefore
indicate pricing., (*7)
The unit tests and inspections made by this package are based on
GSM 03.38 / 3GPP 23.038 for encoding
and GSM 03.40 / 3GPP 23.040 for
concatenated SMS. We have also
referred to documentation provided by third-party SMS gateway providers such as
MessageBird
and Messente., (*8)
License
This package is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version., (*9)
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details., (*10)
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see http://www.gnu.org/licenses/., (*11)