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) );
我做错了什么?
答案 0 :(得分:2)
我不知道您正在寻找什么样的结果,但这里有一些问题:
*
是量词,因此_*:
表示0个或更多_
个字符,后跟:
。你的文字在任何地方都没有这个,所以它永远不会匹配。:
,则需要s
modifier。所以你修改过的表达式看起来像这样,在:
之前对字符使用非贪婪匹配:
/(--batch_.*?:)+/s
这可能需要进一步调整才能得到你想要的东西。