Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Sample Input String:

{"14" Alloy Wheels (Set of 4)":"N/A","Engine":"CrDi","15" Alloy Wheels":"optional","Other":"16" Wheels"};

There are 4 possible cases:

{"key"here":

,"Key"here":

:"Value"here",

:"Value"here"}

I need to get rid of the inverted commas in between keys and values, which is causing

invalid json

when using json_decode in PHP.

One possible solution is using RegEx, but I am not able to formulate the above possible cases.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
337 views
Welcome To Ask or Share your Answers For Others

1 Answer

I did some testing with your string and I came up with the following solution.

  1. Set json formatting apart from the rest
  2. Correct the keys and values
  3. Restore json formatting

    function repairJson( $str) {
        $search = array( '":"', '","', '":{"', '"},"', '{"', '"}' );
        $replace = array("':'", "','", "':{'", "'},'", "{'", "'}" );
        // Distinct json default formatting
        $str = str_replace( $search, $replace, $str );
        // Find and replace all " that are not yet escaped
        $str = preg_replace( '/([^\])"/', '${1}"', $str );
        // Restore json default formatting
        $str = str_replace( $replace, $search, $str );
        return $str;
    }
    

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...