Анализ длины смс сообщения на PHP

Анализ длины смс сообщения на 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;
  
				?>