[英]extract all substring occurances starting with certain character with set length
寻求帮助以提取所有从2017年(本年)开始以及接下来的60个字符(总共64个字符)的子字符串。 子字符串不应包含任何空格。
该字符串可能来自各种来源,例如HTTP标头或DNS查找,因此该字符串的结构将有所不同。 但是,我需要提取的内容将始终是相同的(长度为64个字符,子字符串以当前年份YYYY开头)。
字符串示例:
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 19 Dec 2017 02:34:56 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: xyz
201712140148264celho2kam2t3ajsf3zaiwvwl424nb16es5n8r81ajbgvvo175201712140153182vfdqczsdjvss09ikk7xoannmzyhxwl1q3d8kcsnwmfenacqvz
201712151016343f6fnxgkjpjuzemgp4pbay4s5aagky5bsa5t4wns7ka1admgzp
在以上示例中,有3个匹配条件的匹配项,其中两个出现在同一行(64个字符),一个出现在单独的行(64个字符)。
**请注意:不应提取日期标题中的2017,因为接下来的60个字符包含空格。
我希望能够将所有3个都放入一个数组中
Array
(
[1] => 201712140148264celho2kam2t3ajsf3zaiwvwl424nb16es5n8r81ajbgvvo175
[2] => 201712140153182vfdqczsdjvss09ikk7xoannmzyhxwl1q3d8kcsnwmfenacqvz
[3] => 201712151016343f6fnxgkjpjuzemgp4pbay4s5aagky5bsa5t4wns7ka1admgzp
)
您要查找的正则表达式是2017\\S{60}
。 这与2017
匹配,紧随其后的是60
非空白字符( 64
减去2017
的四个字符)。
要获得所有结果,您需要寻找preg_match_all()
:
$matches = array();
$string = "201712140148264celho2kam2t3ajsf3zaiwvwl424nb16es5n8r81ajbgvvo175201712140153182vfdqczsdjvss09ikk7xoannmzyhxwl1q3d8kcsnwmfenacqvz201712151016343f6fnxgkjpjuzemgp4pbay4s5aagky5bsa5t4wns7ka1admgzp";
$search = preg_match_all("/2017\S{60}/", $string, $matches);
print_r($matches[0]);
哪个输出:
Array
(
[0] => 201712140148264celho2kam2t3ajsf3zaiwvwl424nb16es5n8r81ajbgvvo175
[1] => 201712140153182vfdqczsdjvss09ikk7xoannmzyhxwl1q3d8kcsnwmfenacqvz
[2] => 201712151016343f6fnxgkjpjuzemgp4pbay4s5aagky5bsa5t4wns7ka1admgzp
)
可以看到在这里工作。
希望这可以帮助! :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.