删除文本前的空白行

时间:2012-09-04 03:28:36

标签: php line-breaks strip

有时,我的电子邮件到支持票证系统会在邮件本身之前捕获额外的换行符,因此我的邮件看起来像这样:

  

     

您好。我一直想知道你是不是......“

我可以使用什么来摆脱文本之前的那一行?由于电子邮件提供商以及他们使用mime格式化电子邮件的方式,这是随机场合。 我已经尝试了trim功能,但没有运气。 (是的,我也试过ltrim

处理完毕后应该如下:

  

“你好。我一直想知道你是不是......”

3 个答案:

答案 0 :(得分:4)

真的很奇怪?

我们可以在这里使用正则表达式只从单词字符的开头获取,但更有趣的是,看看字符串中的内容... 请你发布字符串“base64_encode()”的输出,这样我们可以重现并查看一下吗?

这是适用于你的正则表达式...

if (preg_match('/\w.*\w/sm', $subject, $regs)) {
    $result = $regs[0];
}

答案 1 :(得分: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做任何事情。上面是修改后的代码

答案 2 :(得分: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);