|
!!!Convert Unicode Escaped String to PHP String The various ["Google API" http://code.google.com/apis/ajax/] calls return JSON strings containing things like "\u003c". These are escape sequences meant to be converted into single Unicode characters. Javascript does this automatically. PHP does not. I could not find a ready made function in PHP 5 to convert these into their equivalent UTF8 characters. So, below is what I came up with. <?php $result = preg_replace_callback('/\\\\u[0-9a-fA-F]{4}/','unescuni',$json); // $json is a string returned from a google api call // More info can be found at: // http://code.google.com/apis/ajaxsearch/documentation/index.html#fonje_snippets_php $result = preg_replace_callback('/\\\\u[0-9a-fA-F]{4}/','unescuni',$json); function unescuni ($match) { return unicode2utf8(hexdec(substr($match[0],2))); } function unicode2utf8($c) { if($c < 0x80) { return chr($c); } else if($c < 0x800) { return chr( 0xc0 | ($c >> 6) ) . chr( 0x80 | ($c & 0x3f) ); } else if($c < 0x10000) { return chr( 0xe0 | ($c >> 12) ) . chr( 0x80 | (($c >> 6) & 0x3f) ) . chr( 0x80 | ($c & 0x3f) ); } else if($c < 0x200000) { return chr(0xf0 | ($c >> 18)) . chr(0x80 | (($c >> 12) & 0x3f)) . chr(0x80 | (($c >> 6) & 0x3f)) . chr(0x80 | ($c & 0x3f)); } return false; } ?> ---- <!-- Comments below here. |
|