有时,我的电子邮件到支持工单系统会在消息本身之前捕获一个额外的换行符,因此我的消息如下所示:
"
你好。我一直在想你是不是……”
我可以用什么来摆脱文本之前的那一行?由于电子邮件提供商以及他们使用 mime 格式化电子邮件的方式,这是随机的。我已经尝试过这些trim
功能,但没有运气。(是的,我也试过ltrim
)
处理后应如下所示:
“你好。我一直在想你是不是……”
有时,我的电子邮件到支持工单系统会在消息本身之前捕获一个额外的换行符,因此我的消息如下所示:
"
你好。我一直在想你是不是……”
我可以用什么来摆脱文本之前的那一行?由于电子邮件提供商以及他们使用 mime 格式化电子邮件的方式,这是随机的。我已经尝试过这些trim
功能,但没有运气。(是的,我也试过ltrim
)
处理后应如下所示:
“你好。我一直在想你是不是……”
真的很奇怪吗?
我们可以在这里使用正则表达式仅从单词字符的开头获取,但更有趣的是,查看字符串中的内容...您能否发布字符串的“base64_encode()”的输出,以便我们可以重现和看看?
这是应该为您工作的正则表达式...
if (preg_match('/\w.*\w/sm', $subject, $regs)) {
$result = $regs[0];
}
把它放在一起,如果需要,你可以重命名函数。
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 做任何事情。上面是修改后的代码
如果要从消息正文的开头删除任意数量的回车或换行符:
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);