Анализ длины смс сообщения на PHP
Максимальная длина смс сообщения - это 480 символов. СМС сообщение обычно составлено в одном из двух форматов: 7bit (английский текст и большинство символов) и Unicode (в том числе и кириллица). Смс сообщение состоит из одного или нескольких SMS. Поэтому, если вы отправляете сообщения в латинице, то у вас больше запас по длине сообщения по сравнению с кириллицей. Длина смс сообщения может увеличить количество составных частей, если в сообщение попадет хотя бы одна буква русского алфавита. Более подробные цифры можно посмотреть в таблице.
Частей смс |
Кириллица |
Латиница |
|---|---|---|
| 1 | 70 | 134 |
| 2 | 134 | 306 |
| 3 | 201 | 459 |
| 4 | 268 | 612 |
Иногда при интеграции смс сервисов в бизнес-процессы компании необходимо отлеживать из скольких частей состоит смс сообщение. Для этого вы можете воспользоваться скриптом представленным ниже. Данный скрипт возвращает переменной $smscount количество частей переменной $text.
<?php
//текст смс
$text = "Текст sms";
// шаблон
$pattern = '/[а-яА-Я]+/';
//проверка на кириллицу
preg_match($pattern, $text, $matches);
//константы длины
$rusLimits = array(70, 67);
$engLimits = array(160, 153);
//длина строки
$len=strlen($text);
//кириллица
if ( sizeof($matches) > 0 )
{
if ($len<=$rusLimits[0])
{
$smscount=1;
}
else
{
$smscount=ceil($len/$rusLimits[1]);
}
}
else
//латиница
{
if ($len<=$engLimits[0])
{
$smscount=1;
}
else
{
$smscount=ceil($len/$engLimits[1]);
}
}
//выводим
echo $text." - содержит смс: ";
echo $smscount;
?>

