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