如何使用不使用 IP 地址的日期进行拆分


How to split using date not using IP address

我有一个包含日期,IP地址等的大字符串。我需要将内容与日期分开,并用

[0-9]+[/.-])([0-9]+[/.-][0-9]+ 

但它也使用 IP 地址进行拆分。日期和 IP 地址之间的唯一区别是日期有 3 个数字,而 IP 有 4 个数字,如 28.06.2012 和 178.15.16.314。如何在拆分内容时省略 IP 地址?

不好意思。还有一件事我忘了补充。也就是说,日期格式还有其他可能性,例如 25-06-12、2012-06-25、12-06-25。

日期和 IP 地址之间的唯一区别是日期有 3 个数字,而 IP 有 4 个数字,如 28.06.2012 和 178.15.16.314。如何在拆分内容时省略 IP 地址?

首先,日期有四个数字代表年份。其次,一个 IP 地址有四个八位字节。所以以下应该可以解决问题(未测试):

'~('d{1,2}[.-]'d{1,2}[.-]'d{4})~'

测试:

<?php
$date = '28.12.2012';
$ip = '192.168.0.1';
$regex = '~('d{1,2}[.-]'d{1,2}[.-]'d{4})~';
var_dump( preg_match( $regex, $date ) ); // int(1)
var_dump( preg_match( $regex, $ip ) ); // int(0)