可能是一个愚蠢的问题,但我需要找到答案。我们正在编写的应用程序需要处理遥远的过去和未来日期,我认为将我们的日期处理为 64 位 Unix 时间戳将是一个简单的解决方案,只要我正确理解PHP 手册,其中指出最大 int 值取决于平台并且始终有符号。因此,x64 平台应支持 2^63 位,而 x86 平台应支持 2^31 最大位。
基本上,该应用程序仅处理整数时间戳,以使我们相当复杂的算法稍微“简单”一些。然而,对于我们当前的 x86 版本,尝试处理遥远的过去或未来时间戳值会导致 PHP 中任何大于 +/- 2^31 的值出现预期溢出。我的解决方案是简单地使用免费的 Visual C++ Studio 下载来编译 x64 PHP 版本,但在深入研究之前,我想知道我的假设是否正确 - “Windows x64 PHP 版本将正确处理 64 位 int 值,并且正确地将 Windows 'ticks' 转换为 64 位 Unix 时间戳,以实现其本机日期/时间功能,就像 x86 构建一样。”
例如:
echo mktime(0, 0, 0, 12, 31, 2055);
Run Code Online (Sandbox Code Playgroud)
将返回正确的时间戳,而不是false。
同样的情况也适用于 MYSQL 时间戳。例如:
SELECT UNIX_TIMESTAMP('2065-11-30 10:30:19');
Run Code Online (Sandbox Code Playgroud)
将返回正确的值,而不是像我们当前运行的 x86 版本那样返回“0” 。
-我希望我不要太含糊。提前致谢。我们只是一群科学极客,而不是真正的程序员,正在努力解决这个“琐碎”的问题。
我确信这已经被问到并得到了回答,但老实说,在搜索了一下并阅读Regex Tutorial之后,我找不到我的答案.我要做的是匹配一个字符串,其长度与另一个字符串相同.例如,字符串"abcde"将匹配"edcba"但不匹配"abcdf"或"aabbc"或"abc".
这是我最接近的测试代码,它使用了一个字符类,但是我无法弄清楚的是如何在匹配开始时让regex基本上遍历类中的每个字符串:
$string = 'abcde';
$array = array('edcba','eeeee','fghij','fedcba','qqq','cbaed','cba');
foreach ($array as $match)
{
if (preg_match("/[$string]/i",$match))
echo "TRUE -> $match";
else
echo "FALSE -> $match";
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
TRUE -> edcba
TRUE -> eeeee
FALSE -> fghij
TRUE -> fedcba
FALSE -> qqq
TRUE -> cbaed
TRUE -> cba
Run Code Online (Sandbox Code Playgroud)
当我真正想要的是:
TRUE -> edcba
FALSE -> eeeee
FALSE -> fghij
FALSE -> fedcba
FALSE -> qqq
TRUE -> cbaed
FALSE …Run Code Online (Sandbox Code Playgroud)