小编DrP*_*dix的帖子

x64 PHP/MYSQL 构建是否支持 64 位 Windows Server 上的完整 64 位时间戳

可能是一个愚蠢的问题,但我需要找到答案。我们正在编写的应用程序需要处理遥远的过去和未来日期,我认为将我们的日期处理为 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” 。

-我希望我不要太含糊。提前致谢。我们只是一群科学极客,而不是真正的程序员,正在努力解决这个“琐碎”的问题。

php mysql windows

6
推荐指数
1
解决办法
1152
查看次数

必须包含字符串中所有字符的正则表达式匹配

我确信这已经被问到并得到了回答,但老实说,在搜索了一下并阅读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)

php regex string string-comparison anagram

2
推荐指数
1
解决办法
1094
查看次数

标签 统计

php ×2

anagram ×1

mysql ×1

regex ×1

string ×1

string-comparison ×1

windows ×1