我正在尝试解析一个mailheader,但我似乎无法找到如何从分号中获取分号后的换行符。
示例:
Content-Type: multipart/related;
type="multipart/alternative";
boundary="----_=_NextPart_002_01CF36FC.6259F03C"
我正在使用preg_match_all中的以下正则表达式解析它:
/(?P<keyname>.*):(\s*)?(?<value>(?:(?!;).)+)((\s*)?;([\s\\r\\n\\t]*)?(?<sub_value>.*)))?/i
但这并没有给我sub_value中的边界线。 我也试过
(?<sub_value>(.+|;[\s\\r\\n\\t]*))
而不是
(?<sub_value>.*)
但它不会改变任何东西。
.+|;[\s\\r\\n\\t]*<br>
与所有字符一样,或带有换行符/标签的分号
提前致谢!
编辑: 我正在使用时
(?<sub_value>([\w_.=\"\/\-;\s\\r\\n\\t]*))
我也获得了边界部分,但它的数量已经超过应有的数量,并且包含的所有字符都可以出现在邮件边界中? 此外,它在没有分号的情况下捕获换行符。
答案 0 :(得分:0)
试试这个:
$headers = <<<EOT
Host: www.example.com
Content-Length: 9000
Content-Type: multipart/related;
type="multipart/alternative";
boundary="----_=_NextPart_002_01CF36FC.6259F03C"
X-Http: ok
EOT;
preg_match_all("/(?P<keyname>[a-zA-Z0-9-]+):(?P<value>.*?)[\n\r;]+(?P<sub_value>[\s\S]*?)(?=$|[a-zA-Z0-9-]+:)/", $headers, $match);
您可以从this link获取正则表达式的解释。当您尝试使用the link获取解释时,只需从正则表达式中删除(?:P<...>)
。
答案 1 :(得分:0)