Php 正则表达式-忽略新行字符
我遇到了这一行代码:Php 正则表达式-忽略新行字符,php,regex,email-headers,Php,Regex,Email Headers,我遇到了这一行代码: preg_match_all("!boundary=(.*)$!mi", $content, $matches); 要不是 内容类型:多部分/备选; 边界=F43045E21E067188C05413187FD\r\n 它回来了 F43045E21E067188C05413187FD\r\n 什么时候应该回来 F43045E21E067188C05413187FD (不带\r) 有没有办法解决这个问题 注:当\r不存在时,它也应该起作用,只有\n将表达式更改为 preg_
preg_match_all("!boundary=(.*)$!mi", $content, $matches);
要不是
内容类型:多部分/备选;
边界=F43045E21E067188C05413187FD\r\n
它回来了
F43045E21E067188C05413187FD\r\n
什么时候应该回来
F43045E21E067188C05413187FD
(不带\r
)
有没有办法解决这个问题
注:当
\r
不存在时,它也应该起作用,只有\n
将表达式更改为
preg_match_all("!boundary=(.*)\\r?$!mi", $content, $matches);
如果存在,则应删除\r
已编辑:\r需要在RegExp中转义。有两个选项
\r
:
preg_match_all(“!boundary=(.*?)\r?$!mi”,$content,$matches)代码>
[^\r\n]
否定字符类匹配任何字符,但\r
和\n
:
preg_match_all(“!boundary=([^\n\r]*)!mi”,$content,$matches)代码>
\V
速记字符类的较短版本:
看到或看到
注意第二种方法效率更高。是
\r
和\n
文字还是新行字符?这个解决方案因为回车仍然存在。对,我仍然在检查模式,只在\n
处停止<代码>\V也在工作。第一个工作正常,第二个没试过。谢谢我宁愿推荐另外两个更快的选择。我从第一个开始,向大家展示你的模式是如何“固定”的。根据建议,我切换到了“!boundary=(\V*)!mi”
,这也很好
preg_match_all("!boundary=(\V*)!mi", $content, $matches);