Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 已弃用:函数split()已弃用。如何重写这句话?_Regex_Php_Posix Ere - Fatal编程技术网

Regex 已弃用:函数split()已弃用。如何重写这句话?

Regex 已弃用:函数split()已弃用。如何重写这句话?,regex,php,posix-ere,Regex,Php,Posix Ere,我有以下语句,在使用PHP 5.3之前运行良好: 升级到PHP 5.3后,我收到了不推荐的警告: 已弃用:函数split()已弃用 我正在尝试解析格式如下的字符串: 2010-08-10 23:07:58 它的组成部分。我想你想要 你得到了训练。。。 根据您将如何使用它,使用DateTime对象可能比使用六个单独的变量更方便 试着用“explode”替换“split”新版本的PHP和MYSQL接受“explode”而不是“split”+1我发布了preg_split作为替换split的答案,但我

我有以下语句,在使用PHP 5.3之前运行良好:

升级到PHP 5.3后,我收到了不推荐的警告:

已弃用:函数split()已弃用

我正在尝试解析格式如下的字符串:

2010-08-10 23:07:58

它的组成部分。

我想你想要

你得到了训练。。。
根据您将如何使用它,使用DateTime对象可能比使用六个单独的变量更方便

试着用“explode”替换“split”新版本的PHP和MYSQL接受“explode”而不是“split”

+1我发布了preg_split作为替换split的答案,但我必须同意,如果你在解析时间戳,你应该使用为此设计的函数,并进行适当的处理,等等。@Brandon Horsley:这个解决方案唯一奇怪的地方是,年份不是绝对的,而是1900年以后的年份:-因此需要进行后处理:-(@zerkms)好吧,而不是使用“datetime”类型而不是时间戳。请参阅Mchl的答案。@zerkms这是对您的“这个解决方案唯一奇怪的地方是,那一年不是绝对的,而是自1900年以来的年份”。您可以将多种格式的用户输入传递到PHP DateTime对象的构造函数中,这些对象不绑定到1900年的起始年。例如:
new DateTime('1765-06-13 16:45'))
;然后您可以使用对象方法或格式化的输出来访问这些部件。我的错误是,我认为
strtime
可以在UNIX时间戳内部工作,因为那是1900年的事情;但我认为这也不是真的-我不知道,这种怪癖从何而来。@feeela:哦,对了。现在感觉像个混蛋:-我需要是我请注意:-S(即使在1.5年前给出答案的情况下)。抱歉:-(
explode
不能在本例中使用,因为它只能与一个分隔符一起使用。MySQL与此问题完全无关。感谢您简化!相关:
var_dump(strptime($post_timestamp, '%Y-%m-%d %H:%M:%S'));
list($year, $month, $day, $hour, $min, $sec) = preg_split('/[: -]/', $post_timestamp);
$dateTime = new DateTime('2010-08-10 23:07:58');

$year = $dateTime->format('Y');
$month = $dateTime->format('m');
var_dump(strptime($post_timestamp, '%Y-%m-%d %H:%M:%S'));