I'm trying to split a SMS message if it hits the limit of 160 characters.
This is my current code.
$messageparts = str_split($message, 160);
foreach($messageparts as $parts){
sms($numbers, $parts);
}
My current problem
SMS 1 Item A $160 Item B $170 Ite SMS 2 m C $180
As you can see from the example, its quite a bad split. I'm looking for someone who can help so that the function can first split by character limits then delimit by the last " ". So that it will be as the following example.
SMS 1 Item A $160 Item B $170 SMS 2 Item C $180
Use the following code :
$array = explode("
",$message);
$messages = array();
$i = 0;
$newLineCharacterCount = 0;
foreach ($array as $message) {
if ((str_len($messages[$i]) + str_len($message) + $newLineCharacterCount) <= 160) {
$messages[$i] = $messages[$i].message;
$newLineCharacterCount++;
}
else {
$i++;
$newLineCharacterCount = 0;
if (str_len($message) > 160) {
$tempMessages = str_split($message,160);
foreach ($tempMessages as tempMessagePart) {
$messages[$i] = tempMessagePart;
$i++;
}
}
else
$messages[$i] = $message;
}
}
First split messages by lines like that:
$messageParts = array();
$messageLines = explode("
", $message);
foreach ($messageLines as $line) {
foreach (str_split($message, 160) as $part) {
$messageParts[] = $part;
}
}
If you want to split by "." or "," you cn use preg_split function. For example:
$keywords = preg_split("/[\.,]+/", "hypertext. language, programming");
Hope it helps.