0

我正在尝试通过 PHP 推送 javascript,并且正在考虑这是否可能......

我在php中定义了一个数组:

$some_date = ["Date.UTC(2008,1,9)", ....];

echo json_encode = ($some_date);

在客户端我打电话

$.getJSON(....){
....
}

我得到的数据为“Date.UTC(2008,1,9)”,如何在不循环整个数组的情况下去掉“?

4

3 回答 3

1

我不明白为什么你不应该迭代数组,但你可以加入数组然后使用正则表达式匹配日期,然后再切开它。

这都可以在服务器端完成:

$some_date = ["Date.UTC(2008,1,9)", ....];
$some_date_string = implode("|", $some_date);
$some_date_string = preg_replace_callback(/Date\.UTC\(([0-9]{4}),([0-9]{1,2}),([0-9]{1,2})\)/g, function(matches) {
    // matches[0] = year
    // matches[1] = month/day - dont know your order (y.m.d/y.d.m)
    // matches[2] = month/day
}, $some_date_string);

$some_date = explode("|", $some_date);

和客户端:

$.getJSON('path.php', function(arr) {
    var arr = arr.join('|').replace(/Date\.UTC\(([0-9]{4}),([0-9]{1,2}),([0-9]{1,2})\)/g, function(_, a, b, c) {
        // a = year
        // b = month/day - dont know your order (y.m.d/y.d.m)
        // c = month/day
    }).split('|');
});
于 2013-06-05T22:52:29.627 回答
0

您可以使用 replace 方法删除双引号。

var new_date = some_date.replace(/"/g, '');
于 2013-06-05T22:38:16.027 回答
0

如果您想继续使用“json_encode()”,我认为不存在针对您的问题的简单解决方案...

相反,如果您的数组看起来很简单,为什么不自己构建 JSON 对象呢?

$some_date = ["Date.UTC(2008,1,9)", "Date.UTC(2008,1,10)"];
$json_encoded = '['. implode(', ', $some_date) .']';
echo $json_encoded;

简单,干净,漂亮!

于 2013-06-05T23:08:50.103 回答