Preg_match_all()获取新行PHP


Preg_match_all() get new lines PHP

我正在尝试获取一封pipped电子邮件的所有数据,以便将字符串放入一个文件&将其保存为base64。

以下是文件的一些示例:

--089e0158c026b67091050f58bd9c--
--089e0158c026b6709a050f58bd9e
Content-Type: audio/mpeg; name="test.mp3"
Content-Disposition: attachment; filename="test.mp3"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i6agw8nv0
SUQzBAAAAAABKlRYWFgAAAAZAAADV01GU0RLTmVlZGVkADAuMC4wLjAwMDAAVFhYWAAAAB4AAANE
ZXZpY2VDb25mb3JtYW5jZVRlbXBsY
XRlAEwxAFRYWFgAAAAfAAADV01GU0RLVmVyc2lvbgAxMi4w

然而,在使用返回字符之前,我的代码只拾取第一行。我正试图找到一种方法,让所有返回字符一直到字符串的末尾。

这是我迄今为止尝试过的代码:

    preg_match_all("/X-Attachment-Id:'s(.*)/i", $email, $matches);

我一直在搜索&正在搜寻,但已碰壁。我看到一些人说要用/s&其他要使用/e,但是where&如何申请我的搜索是我不确定的地方。

如果有人能给我一个关于如何做这个正则表达式的小建议,那将对我有很大帮助!(我对正则表达式很陌生。

您可以使用:

preg_match_all("/X-Attachment-Id:'s([^µ]*)/i", $email, $matches);

我知道它有点脏,但它有效。

最好的方法是:

preg_match_all("/X-Attachment-Id:'s(.*)/si", $email, $matches);

注意分隔符后面的"s",这就是您所说的regex选项您可以将其与"i"其他组合