Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从数组中删除字符_Php_Arrays - Fatal编程技术网

Php 如何从数组中删除字符

Php 如何从数组中删除字符,php,arrays,Php,Arrays,这是我的阵列快照 Array( [created_at] => 2014-02-18T08:29:33.388Z [modified_at] => 2014-02-18T12:44:46.011Z ) 我必须从[created]数组和[modified_at]中删除字符,我应该如何解决此问题 我想要的是:[created_at]=>2014-02-18 8:29:33 其次是:[modified_at]=>2014-02-18 12:44

这是我的阵列快照

Array(
        [created_at] => 2014-02-18T08:29:33.388Z
        [modified_at] => 2014-02-18T12:44:46.011Z
      )
  • 我必须从
    [created]
    数组和
    [modified_at]
    中删除字符,我应该如何解决此问题
  • 我想要的是:
    [created_at]=>2014-02-18 8:29:33
  • 其次是:
    [modified_at]=>2014-02-18 12:44:46
  • 如何解决这个问题?数据的格式为
    json
    ,我尝试过以下代码:

    preg_replace('/[^a-zA-Z0-9]/', "_", $aba);
    

    什么是解决此问题的正确方法。

    不需要使用正则表达式,只需重新格式化日期字符串即可

    例如:

    foreach ($arr as $key => $value) {
        if (in_array($key, array('created_at', 'modified_at'))) {
            $arr[$key] = date('Y-m-d H:i:s', strtotime($value));
        }
    }
    

    要严格执行您想要的操作,这就是字符串操作(恰好代表日期/时间戳的字符串):

    这不需要将字符串转换为日期戳,然后再转换回来

    $result = preg_replace('/([0-9\-]+)[^0-9]*?([0-9\:]+).*/', '$1 $2', $array['created_at']);
    
    将为您提供:

    2014-02-18 12:44:46
    2014-02-18 08:29:33
    
    请看这个

     $str = "2014-02-18T08:29:33.388Z";
       $nstr = preg_replace('/\.([0-9]{3}[a-zA-Z])$/', "", $str);
       echo preg_replace('/[a-zA-Z]/', " ", $nstr);
    

    输出:2014-02-18 08:29:33

    您尝试的代码与问题完全无关。你真的想“用下划线替换任何不是字母或数字的东西”吗?不是根据你的问题!我想从[created_at]=>2014-02-18T08:29:33.388Zthanks manu中获得2014-02-18 8:29:33,但你能帮助正确的站点和预定方式学习Regex吗?请看这个问题:谢谢deepus,但输出是:2014-02-18T08:29:33,我想删除。这会带来额外的开销(使用strotime将字符串转换为时间戳,然后使用date再次转换为时间戳)只是为了操纵字符串值,因此并不能解决所提出的问题。
     $str = "2014-02-18T08:29:33.388Z";
       $nstr = preg_replace('/\.([0-9]{3}[a-zA-Z])$/', "", $str);
       echo preg_replace('/[a-zA-Z]/', " ", $nstr);