簡體   English   中英

如何從json值中刪除單引號

[英]How to remove single quotations from json value

來自 api 的 Json 返回特殊字符,我想刪除它們,因為它會導致問題

這是json的一部分;


    [
        {
            "id": "email",
            "value": "Email\b\b\b\b\b\b\b\b"
        },
        {
            "id": "email",
            "value": "xxx@email.com\f\f\f\f\f\f\f\f\f\f\f\f"
        },
        {
            "id": "email",
            "value": "xxx@email.com\u0001"
        }
    ]

我只想要電子郵件而不是反斜杠后的字符

我試過trim() 和preg_match。


    $maps_json = file_get_contents('ats.json');
    $maps_array = json_decode($maps_json);

    var_dump(str_split($maps_array[0]->value));

以上返回此,我想刪除電子郵件地址后的所有其他字符。


    array(13) {
      [0]=>
      string(1) "E"
      [1]=>
      string(1) "m"
      [2]=>
      string(1) "a"
      [3]=>
      string(1) "i"
      [4]=>
      string(1) "l"
      [5]=>
      string(1) "
      [6]=>
      string(1) "
      [7]=>
      string(1) "
      [8]=>
      string(1) "
      [9]=>
      string(1) "
      [10]=>
      string(1) "
      [11]=>
      string(1) "
      [12]=>
      string(1) "
    }

正如你所看到的,這個值有額外的字符,我不知道如何刪除

首先,您應該強制 json 源不為您提供反斜杠符號,但是如果您不能這樣做,請嘗試以下操作:

$json= str_replace(["\b","\f"], "", $json);
$maps_array = (json_decode($json));
var_dump(str_split($maps_array[0]->value));

輸出:

array(5) {
[0]=>
 string(1) "E"
 [1]=>
 string(1) "m"
 [2]=>
 string(1) "a"
 [3]=>
 string(1) "i"
 [4]=>
 string(1) "l"
}

使用 str_replace 刪除反斜杠符號。 但是,如果您有更多特殊符號\\r\\n\\t,您可以考慮更高級的字符刪除功能。

您需要先對其進行解碼,然后使用preg_replace()從子數組value索引中刪除不需要的值

$maps_array = json_decode($maps_json,true);

foreach($maps_array as &$map){
    $map['value'] = preg_replace("/[^a-zA-Z0-9]/", "", $map['value']);
}

print_r($maps_array);

輸出: -https : //3v4l.org/9I69P

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM