我正在尝试拆分短信,如果它达到160个字符的限制。
这是我目前的代码。
$messageparts = str_split($message, 160);
foreach($messageparts as $parts){
sms($numbers, $parts);
}
我当前的问题
SMS 1 Item A $160 Item B $170 Ite SMS 2 m C $180
从示例中可以看出,它的分裂非常糟糕。我正在寻找能够提供帮助的人,以便函数可以先按字符限制进行拆分,然后用最后一个“\ n”分隔。所以它将如下例所示。
SMS 1 Item A $160 Item B $170 SMS 2 Item C $180
答案 0 :(得分:1)
使用以下代码:
$array = explode("\n",$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;
}
}
答案 1 :(得分:0)
首先按行分割消息:
$messageParts = array();
$messageLines = explode("\n", $message);
foreach ($messageLines as $line) {
foreach (str_split($message, 160) as $part) {
$messageParts[] = $part;
}
}
如果要按“。”拆分。或“,”你使用preg_split功能。例如:
$keywords = preg_split("/[\.,]+/", "hypertext. language, programming");
希望它有所帮助。