0

ときどき、メールからサポート チケットへのシステムがメッセージ自体の前に余分な改行をキャッチするため、メッセージは次のようになります。

"

こんにちは。私はあなたが...」

テキストの前にある行を削除するにはどうすればよいですか? これは、電子メール プロバイダーと、mime を使用して電子メールをフォーマットする方法が原因でランダムに発生します。私はすでにtrim機能を試しましたが、うまくいきません。(はい、私も試しましたltrim

処理が完了すると、次のようになります。

「こんにちは。ずっと気になっていたのですが…」

4

3 に答える 3

4

それは本当に奇妙ですか?

ここで正規表現を使用して単語文字の先頭からのみ取得できますが、もっと興味深いのは、文字列の内容を確認することです...文字列の「base64_encode()」の出力を投稿していただけますか?見てみる?

これがあなたのために働くはずの正規表現です...

if (preg_match('/\w.*\w/sm', $subject, $regs)) {
    $result = $regs[0];
}
于 2012-09-04T03:34:57.217 に答える
1

これをまとめて、必要に応じて関数の名前を変更できます。

function removeDeadSpaceBeforeFirstChar($string) {
    $strtemp = $string;

    for($i = 0; $i < strlen($strtemp); $i++) {
        if($strtemp[$i] == " ") {
            $strtemp = substr($strtemp, $i, strlen($strtemp)); 
        }

        if($i > 0 && $strtemp[$i] != " ") {
            return $strtemp;
            break;  
        }
    }
    return false;
}

これを印刷します:

      123456789
123456789

編集:なぜそのような結果を投稿したのかわかりません。コードを調べていたところ、substrで何もしていないことに気づきました。上記は修正されたコードです

于 2012-09-04T03:38:23.380 に答える
0

メッセージ本文の先頭から任意の数のキャリッジリターンまたは改行を削除する場合:

while (in_array(substr($msgbody, 0, 1), array("\r", "\n")))
    $input = substr($msgbody, 1);

メッセージの先頭にときどき表示される特定のバイトシーケンスのみをキャッチする場合(たとえば、キャリッジリターンの後に改行が続く場合)、代わりに次のようなものを使用できます。

if (substr($msgbody, 0, 2) == "\r\n")
    $input = substr($msgbody, 2);
于 2012-09-04T03:47:28.670 に答える