preg_slit不应该像它应该工作? - php

时间:2018-06-14 10:55:56

标签: php

preg_slit函数对我来说无法正常工作。函数在数组中输出1个值而不是3. Demo

$response = '--batch_QXn9PvafngA_AAdxhnxliYc
Content-Type: application/http
Content-ID: response-3368-post

HTTP/1.1 200 OK
ETag: "3057934386064000"
Content-Type: application/json; charset=UTF-8
Date: Thu, 14 Jun 2018 09:06:33 GMT
Expires: Thu, 14 Jun 2018 09:06:33 GMT
Cache-Control: private, max-age=0
Content-Length: 860


--batch_QXn9PvafngA_AAdxhnxliYc
Content-Type: application/http
Content-ID: response-3369-post

HTTP/1.1 200 OK
ETag: "3057934386064000"
Content-Type: application/json; charset=UTF-8
Date: Thu, 14 Jun 2018 09:06:33 GMT
Expires: Thu, 14 Jun 2018 09:06:33 GMT
Cache-Control: private, max-age=0
Content-Length: 860

}

--batch_QXn9PvafngA_AAdxhnxliYc--';


echo '<pre>';
print_r( preg_split("/(\--batch_*:)+/", $response) );

我做错了什么?

1 个答案:

答案 0 :(得分:2)

我不知道您正在寻找什么样的结果,但这里有一些问题:

  • *是量词,因此_*:表示0个或更多_个字符,后跟:。你的文字在任何地方都没有这个,所以它永远不会匹配。
  • 如果您希望匹配多行以转到:,则需要s modifier

所以你修改过的表达式看起来像这样,在:之前对字符使用非贪婪匹配:

/(--batch_.*?:)+/s

这可能需要进一步调整才能得到你想要的东西。