为什么从字符串到整数的类型转换总是返回“”;0〃;
Why does type casting from string to integer always return "0"?
我正在写一个AJAX聊天脚本,我正在集成一个系统来解析时间(基本上就像BBCode)。问题是,当我尝试将时间(UNIX时间戳)强制转换为用于date()的整数时,它总是返回"0"。下面是我用来查找和替换的代码。我还添加了一个我试图解析的示例
$out = preg_replace("/'[time'](.*)'['/time']/i",date("c",(int)"$1",$out);
样品:
<b>GtoXic</b>: [time]1342129366[/time]
因为实际转换为整数的是文字字符串$1
,并且将字符串转换为整数以以下方式工作:
- 如果字符串的开头是一个有效的数字表示,请使用它,直到我们遇到与该格式不兼容的字符为止
- 否则返回零
为了使其发挥作用,您可以使用preg_replace_callback()
:
$output = preg_replace_callback("/#'[time'](.*)'[/time']#i", function ($matches) {
return date("c", $matches[1]);
}, $input);
(int)
强制转换实际上是不必要的,当您将值传递给需要整数的函数时,PHP将自动处理此问题。
您需要使用preg_replace_callback()
。
脚本失败的原因是(int)"$1"
实际上是0
(零),因此在将其作为参数之一传递之前,它已经转换为零。
您需要的是带有回调函数的preg_replace_callback:
$out = "<b>GtoXic</b>: [time]1342129366[/time]";
$out = preg_replace_callback('/'[time']([0-9]*)'['/time']/i', 'test', $out);
function test($matches)
{
return date("c", (int)$matches[1]);
}
相关文章:
- .value返回字符串,直到我将其保存到变量
- 无法从量角器测试中元素的值返回字符串
- 如何使用match返回字符串中的字符
- document.write未返回字符串
- $.ajax 检查返回字符串是否为“错误”
- jQuery AJAX调用PHP脚本并返回字符串
- javascript中对数字数组的迭代返回字符串
- 带多维数组返回字符串的json_encode;阵列”;而不是数据
- javascript只返回字符串的一级域名
- 使用Node.js'fs.readFile()返回字符串出现的行
- Javascript返回字符串
- Asp.net WebMethod-返回字符串[]并使用JavaScript进行解析
- 返回字符串中第一个数字之前出现的所有字母
- Javascript 计算器返回字符串而不是值
- EmberJs 将函数的返回字符串添加为类名
- 跨域 AJAX 调用返回字符串 JSON,而不是 JSON 对象
- Javascript:调整base64图像的大小并以非异步方式返回字符串
- 量角器/JavaScript - 从选择下拉列表中返回字符串的函数
- 在 JavaScript 中返回字符串
- 数组 .each() 循环返回字符串而不是 jQuery 中的值