Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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
Php 当substr()返回字符串时,strotime()函数的工作不一致_Php_Strtotime_Substr - Fatal编程技术网

Php 当substr()返回字符串时,strotime()函数的工作不一致

Php 当substr()返回字符串时,strotime()函数的工作不一致,php,strtotime,substr,Php,Strtotime,Substr,我使用substr()从长文本中获取日期字符串,日期是使用preg\u match()函数找到的。 然后我使用strotime()将这个字符串转换成一个历元时间戳,因为我需要与这个格式的另一个日期进行比较 它的工作方式似乎很不一致,经过一些测试,我似乎找不到bug的来源。虽然substr()返回的日期字符串总是正确的,但是strotime()函数并不总是起作用。请注意,substr()是从一个较大的字符串中提取的,该字符串本身来自一个数据库。问题可能来自隐藏字符或格式 <?php $Dat

我使用
substr()
从长文本中获取日期字符串,日期是使用
preg\u match()函数找到的。
然后我使用
strotime()
将这个字符串转换成一个历元时间戳,因为我需要与这个格式的另一个日期进行比较

它的工作方式似乎很不一致,经过一些测试,我似乎找不到bug的来源。虽然
substr()
返回的日期字符串总是正确的,但是
strotime()
函数并不总是起作用。请注意,
substr()
是从一个较大的字符串中提取的,该字符串本身来自一个数据库。问题可能来自隐藏字符或格式

<?php
$DateString = substr($text, $matches[sizeof($matches) - 1][1] - 22, 17); //$DateString = the expected '2018-03-21 08:04' when echo
$DateString_hardcoded = '2018-03-21 08:04';

$DateEpoch = strtotime($DateString); //$DateEpoch is null
$DateEpoch_hardcoded = strtotime($DateString_hardcoded); //$DateEpoch_hardcoded return the expected 1521619440
?>

正如预期的那样。

结果证明我只是不知道如何计数,我必须为substr()的起始索引做-21而不是-22。 我以一个美好的约会结束,但在一开始就有一片空白。我不知道为什么当echo的时候它没有出现。
已解决。

您能否发布示例,以便我们能够实际帮助您给出答案。我未能设置示例代码的格式。现在编辑。
$matches
$text
看起来像什么?@Waterlomatt$matches是结果数组,由preg_match()分配,带有preg_OFFSET_CAPTURE标志$例如,文本是:分配给的操作。[2010-08-23 16:10 UTC]状态更改为由Alfio Mantineo完成。我将考虑使用DateTime而不是StrotTime。示例:echo DateTime::createFromFormat('Y-m-dh:i',$DateString_硬编码)->format('U');日期-时间是一个更好的选择,也更可靠。提示,当回送某个内容时,您希望确保输出周围没有前导空格和尾随空格(或其他内容)。类似于
echo'*'的东西$stringtotest.“*”
substr($text, $matches[sizeof($matches) - 1][1] - 22, 17) = '2010-08-23 16:10', $DateEpoch = 1282579800