Здравствуйте.
Есть скрипт для подсчета кол-ва смс:
$smsCountSym = strlen($message);
if (preg_match('/[А-Яа-яёЁ]/iu', $message))
{
$smsPart = ceil($smsCountSym / 70);
}
else
{
$smsPart = ceil($smsCountSym / 140);
}
но он не учитывает склейку сообщений и спец символы, которые увеличивают кол-во символов в смс.
Вот что удалось уточнить:
Одно длинное сообщение может разбиваться на несколько SMS, за каждое из которых снимается отдельная плата. Одно SMS может содержать 70 символов с нелатинскими буквами (например, на русском) или 160 символов только с латинскими буквами. Для передачи более длинного сообщения оно разбивается на несколько SMS, и в каждое SMS добавляется специальный заголовок (UDH), позволяющий телефону объединить полученные части в одно длинное сообщение, и максимальная длина каждой SMS в этом случае становится 67 символов для нелатинских и 153 для латинских букв. Часть символов, например, "№`" не относятся к латинским, поэтому сообщения, содержащие подобные символы, кодируются, как сообщения с нелатинскими символами. Также существуют некоторые спецсимволы, для кодирования которых используются всегда 2 символа — это "{}[]^~\|€".
Но это скорее всего не все. Может быть кто-то сталкивался с такой же задачей? Поделитесь пожалуйста решением.