strtotime()无法正常工作,无法找出原因

时间:2019-04-17 18:09:02

标签: php

好的,我在strtotime()上遇到了一些问题,使用此php类,我将得到类似的响应:

2019年4月3日,格林尼治标准时间(CEST)死于狂犬病等级988级。

然后,我正在使用implode()仅获得2019年4月3日CEST,但是当尝试使用strtotime($ output_str)时,它将返回nil。

为什么?

include_once "TibiaWebAPI.class.php";

$player = new Tibia\Player("Punbelz");

if($player->getDeaths()) {
    $lastdeath = $player->getDeaths()[0];
    $output_str = implode(" ", array_splice(explode(" ",$lastdeath),0,1));
    echo strtotime($output_str);
}

作为参考,这是TibiaWebAPI.class

编辑:

即使使用preg_match()也不起作用。

include_once "TibiaWebAPI.class.php";

$player = new Tibia\Player("Punbelz");

if($player->getDeaths()) {
    $lastdeath = $player->getDeaths()[0];
    $pattern = "/(.*?)[0-9]+[:][0-9]+[:][0-9]+/";

    if (preg_match($pattern, $lastdeath, $matches)) {
        $myDate = $matches[0];

        echo strtotime($myDate);
    }
}

1 个答案:

答案 0 :(得分:1)

首先要array_slice,否则会得到注意:仅变量应通过引用传递。其次,您需要获取5个元素:

$output_str = implode(" ", array_slice(explode(" ", $lastdeath), 0, 5));
echo strtotime($output_str);

Demo

如果Died始终将两者分开,则只需爆炸即可:

$output_str = explode(" Died ", $lastdeath);
echo strtotime($output_str[0]);

Demo