2009-08-30 26 views
1

文字列を取り、文字数をカウントし、文字数に基づいて文字列を分割/分割し、一度に110文字の電子メールを送信します。文字数に基づいてPHPの文字列を解析する

に使用する適切なロジック/ PHPがどうなるか:私はおそらく文字をカウントするためにstrlenを使用する必要があるだろう知っている

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. 

、スルーループにループのいくつかのタイプを、私は」それについてどうやってどうやって行くのか分かりません。

ありがとう!

+0

あなたがすでに持っているコードを表示してください。これは、誰かがあなたのために書いてほしいものの仕様のように読まれます。 –

+0

実際には、実際には - コードを書いていません。ロジックと、どの機能が最良のものかを理解しようとしています。 – Dodinas

答えて

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. 
} 
+0

ありがとう、セバスチャン。私はあなたの方法が好きですが、preg_splitのように、何文字を置いても(110以上)、2つの配列を作成します(ほとんどの場合)3以上にする必要があります。何か案は? – Dodinas

+0

私の悪い;正常に動作する正規表現を修正しました。今すぐ希望の仕事をしなければならない。 –

+0

ありがとう、これは大きな助けになりました! – Dodinas

0

str_split()を使用して、結果の配列を反復処理します。

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

} 
関連する問題