Разделение абзаца на 160 символов для обмена текстовыми сообщениями - PullRequest
3 голосов
/ 13 ноября 2009

У меня проблемы с логикой выделения абзаца текста и разбиения его на слова / предложения для отправки в нескольких текстовых сообщениях. Каждое текстовое сообщение может содержать до 160 символов. Я хочу аккуратно разбить абзац.

Вот решение (спасибо Leventix!):

public static function splitStringAtWordsUpToCharacterLimit($string, $characterLimit) {
    return explode("\n", wordwrap($string, $characterLimit));
}

Ответы [ 4 ]

6 голосов
/ 13 ноября 2009

Вы можете использовать wordwrap , затем взорвать по новым строкам.

3 голосов
/ 14 ноября 2009

Я использую эту функцию,

function sms_chunk_split($msg) {
   $msg = preg_replace('/[\r\n]+/', ' ', $msg);
   $chunks = wordwrap($msg, 160, '\n');
   return explode('\n', $chunks);
}

Он разбивает длинное SMS-сообщение на массив из 160-байтовых фрагментов, разделяя их по границам слова.

0 голосов
/ 14 ноября 2009
<?php
 $string = str_repeat('Welcome to StackOverFlow, Heres Your Example Code!', 6);

 print_r(str_split($string, 160));

 # You could also Alias the function.
 function textMsgSplit($string, $splitLen = 160) {
  return str_split($string, $splitLen);
 }
?>
0 голосов
/ 13 ноября 2009

Зачем вам здесь нужно использовать регулярное выражение!?

Все, что вам нужно сделать, это разбить строку на сколько угодно текстовых сообщений. так что вы должны сделать что-то вроде (я не могу вспомнить точный синтаксис, мой PHP ржавый) length($string)/$charmax, а затем просто сделать подстроку много раз в массив и вернуть этот массив

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...