9
filtersms
filtersms
SYNOPSIS
filtersms($s)
DESCRIPTION
filtersms returns an array containing the text $s normalized for sending by SMS, the character encoding, the text length, the number of SMS messages required and the maximum number of characters available before an additional SMS message is required.
EXAMPLE
php > require 'library/filtersms.php';
php > var_dump(filtersms('Hello, world!'));
array(5) {
[0]=>
string(12) "Hello, world!"
[1]=>
string(4) "7bit"
[2]=>
int(12)
[3]=>
int(1)
[4]=>
int(160)
}
php > var_dump(filtersms('Привет, мир!'));
array(5) {
[0]=>
string(21) "Привет, мир!"
[1]=>
string(5) "16bit"
[2]=>
int(12)
[3]=>
int(1)
[4]=>
int(70)
}
CODE
- function filtersms($s) {
- $charset7bit = "@£\$¥èéùìòÇ\nØø\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\"#¤%&'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà";
- $charset7bitext = "\f^{}\\[~]|€";
- $s = preg_replace('/\R/', "\r\n", trimsms($s));
- if (preg_match('/[^' . preg_quote($charset7bit . $charset7bitext, '/') . ']/', $s)) {
- $coding='16bit';
- $maxlen=70;
- $extlen=67;
- }
- else {
- $coding='7bit';
- $maxlen=160;
- $extlen=153;
- $s = preg_replace('/([' . preg_quote($charset7bitext, '/') . '])/u', "\e\\1", $s);
- }
- $msglen = mb_strlen($s, 'UTF-8');
- if ($msglen > $maxlen) {
- $count = 1 + floor($msglen / $extlen);
- $len = $count * $extlen;
- }
- else {
- $count = 1;
- $len = $maxlen;
- }
- return array($s, $coding, $msglen, $count, $len);
- }
- function trimsms($s) {
- return preg_replace('/ *(\R)+/', '\1', preg_replace('/^ /m', '', preg_replace('/[ \t]+/', ' ', trim($s))));
- }
Comments