Regex 已弃用:函数split()已弃用。如何重写这句话?
我有以下语句,在使用PHP 5.3之前运行良好: 升级到PHP 5.3后,我收到了不推荐的警告: 已弃用:函数split()已弃用 我正在尝试解析格式如下的字符串: 2010-08-10 23:07:58 它的组成部分。我想你想要 你得到了训练。。。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的答案,但我
根据您将如何使用它,使用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'));