Разделение абзаца на 160 символов для обмена текстовыми сообщениями

Asked
Viewd2653

3

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

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

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

4 ответов

6

Вы можете использовать перенос слов , затем разделить символами новой строки:

 public static function splitStringAtWordsUpToCharacterLimit($string, $characterLimit) {
    return explode("\n", wordwrap($string, $characterLimit));
} 
 
  • Склоняюсь к вашему ответу :).Мне действительно нравится этот сайт. Он помогает мне стать лучшим программистом, отвечая на эти вопросы, а затем находя решения людей для проблем, с которыми они столкнулись.Очень крутой Leventix!

    Mark Tomlin14 ноября 2009, 06:11
0
 <?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);
 }
?>
 
3

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

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

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

0

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

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

  • Думаю, он старается не обрывать слово.

    John Rose13 ноября 2009, 21:08