Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
338 views
in Technique[技术] by (71.8m points)

php - Remove quotes (single/double) from key/value of a JSON string

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

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

1 Reply

0 votes
by (71.8m points)

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;
    }
    

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...