有时,我的电子邮件到支持票证系统会在邮件本身之前捕获额外的换行符,因此我的邮件看起来像这样:
“
您好。我一直想知道你是不是......“
我可以使用什么来摆脱文本之前的那一行?由于电子邮件提供商以及他们使用mime格式化电子邮件的方式,这是随机场合。
我已经尝试了trim
功能,但没有运气。 (是的,我也试过ltrim
)
处理完毕后应该如下:
“你好。我一直想知道你是不是......”
答案 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);