为什么从字符串到整数的类型转换总是返回"0"?

Joh*_*rUK 1 html javascript php

我正在编写一个AJAX聊天脚本,我正在集成一个系统来解析时间(基本上就像BBCode).问题是,当我尝试将时间(UNIX时间戳)转换为与date()一起使用的整数时,它总是返回"0".我用来查找和替换的代码如下.我还添加了一个我正在尝试解析的示例

$out = preg_replace("/\[time\](.*)\[\/time\]/i",date("c",(int)"$1",$out);
Run Code Online (Sandbox Code Playgroud)

样品:

<b>GtoXic</b>: [time]1342129366[/time]
Run Code Online (Sandbox Code Playgroud)

Dav*_*dom 5

因为实际上转换为整数的是文字字符串$1,将字符串转换为整数的方式如下:

  • 如果字符串的开头是有效的数字表示,请使用它直到我们遇到与该格式不兼容的字符
  • 否则返回零

为了使其工作,您将使用preg_replace_callback():

$output = preg_replace_callback("/#\[time\](.*)\[/time\]#i", function ($matches) {
  return date("c", $matches[1]);
}, $input);
Run Code Online (Sandbox Code Playgroud)

(int)投实际上是不必要的,当你传递价值给需要整数的函数PHP会自动处理.