亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP Regex 查找并替換所有以特定字符開頭和結尾的字符串

PHP Regex 查找并替換所有以特定字符開頭和結尾的字符串

PHP
料青山看我應如是 2022-12-11 19:10:57
說到正則表達式,我是個新手。我有一個包含時間戳的 json 字符串,我想刪除date字符串中所有出現的字段。美化后的 json 字符串如下所示:{  "abc": 157,  "efg": 1,  "hij": "1",  "klm": "0.00",  "created_at": {    "date": "2020-04-08 12:53:34.682759",    "timezone_type": 3,    "timezone": "UTC"  },  "updated_at": {    "date": "2020-04-08 12:53:34.682759",    "timezone_type": 3,    "timezone": "UTC"  }}"date": "我想刪除所有以開頭和結尾的字符串",所以輸出看起來像下面這樣:{  "abc": 157,  "efg": 1,  "hij": "1",  "klm": "0.00",  "created_at": {    "timezone_type": 3,    "timezone": "UTC"  },  "updated_at": {    "timezone_type": 3,    "timezone": "UTC"  }}我知道preg_match_all實際上可以幫助找到所有匹配項,但是,我發現在構建模式時遇到困難,尤其是我的模式包含逗號和雙引號。
查看完整描述

1 回答

?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

正則表達式(或任何其他字符串函數)不是編輯 JSON 字符串的方式!您必須將其解碼為數組,然后對其進行編輯,最后將其重新編碼為 JSON。


$json = <<<'JSON'

{

  "abc": 157,

  "efg": 1,

  "hij": "1",

  "klm": "0.00",

  "created_at": {

    "date": "2020-04-08 12:53:34.682759",

    "timezone_type": 3,

    "timezone": "UTC"

  },

  "updated_at": {

    "date": "2020-04-08 12:53:34.682759",

    "timezone_type": 3,

    "timezone": "UTC"

  }

}

JSON;


$arr = json_decode($json, true);


function delete_key(&$arr, $key) {

    foreach($arr as $k => &$v) {

        if ( $k === $key ) {

            unset($arr[$k]);

            continue;

        }

        if ( is_array($v) ) {

            delete_key($v, $key);

        }

    }

}


delete_key($arr, 'date');


print_r(json_encode($arr, JSON_PRETTY_PRINT));

演示


查看完整回答
反對 回復 2022-12-11
  • 1 回答
  • 0 關注
  • 145 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號