1

我开始编写一个小脚本,它接受一个字符串,计算字符数,然后根据字符数,拆分/拆分字符串,一次发送/发送 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 来计算字符,并使用某种类型的循环来循环,但我不太确定如何去做。

谢谢!

4

3 回答 3

1

如果您不关心在哪里断开字符串,则可以使用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.
}
于 2009-08-30T16:02:33.620 回答
0

使用str_split()并遍历结果数组。

于 2009-08-30T15:50:36.733 回答
0

从我的头上看,应该按原样工作,但不必这样做。不过逻辑没问题。

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);
  }

}
于 2009-08-30T15:55:04.337 回答