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 に答える