Разбор строки PHP на основе количества символов - PullRequest
1 голос
/ 30 августа 2009

Я начинаю работать над небольшим сценарием, который принимает строку, подсчитывает количество символов, затем, основываясь на количестве символов, разбивает / разбивает строку на части и отправляет / отправляет по электронной почте 110 символов за раз.

Какую логику / PHP использовать для:

1) Count the number of characters in the string
2) Preface each message with (1/3) (2/3) (3/3), etc...
3) And only send 110 characters at a time.

Я знаю, что мне, вероятно, придется использовать strlen для подсчета символов и какой-то цикл для прохождения цикла, но я не совсем уверен, как это сделать.

Спасибо!

Ответы [ 3 ]

1 голос
/ 30 августа 2009

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

Иначе, если вы обеспокоены этим (и хотите, скажем, разбить только на пустые пространства), вы можете сделать что-то вроде:

// $str is the string you want to chop up.
$split = preg_split('/(.{0,110})\s/',
                    $str,
                    0,
                    PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

С этим массивом вы можете просто сделать:

$count = count($split);
foreach ($split as $key => $message) {
    $part = sprintf("(%d/%d) %s", $key+1, $count, $message);
    // $part is now one of your messages;
    // do what you wish with it here.
}
0 голосов
/ 30 августа 2009

С макушки головы, должно работать как есть, но не обязательно. Хотя логика в порядке.

foreach ($messages as $msg) {

  $len = strlen($msg);

  if ($len > 110) {
    $parts = ceil($len / 100);
    for ($i = 1; $i <= $parts; $i++) {
      $part = $i . '/' . $parts . ' ' . substr($msg, 0, 110);
      $msg = substr($msg, 109);
      your_sending_func($part);
    }

  } else {
    your_sending_func($msg);
  }

}
0 голосов
/ 30 августа 2009

используйте str_split () и выполняйте итерацию по полученному массиву.

...