Plug-in for Guzzle that strips BOMs from server responses.
In your project's composer.json
file:
"require": {
"cviebrock/guzzle-stripbom-plugin": "0.1.*",
}
In your code:
$client = new Guzzle\Http\Client('http://example.com');
$client->addSubscriber( new Cviebrock\Guzzle\Plugin\StripBom\StripBomPlugin() );
$request = $client->get('some/request');
$response = $client->send($request);
$data = $response->json();
Some API services (mostly .NET services) include a BOM in their response body.
The BOM is 2-4 bytes that indicate what character encoding the response is in (e.g. UTF8). The problem is that PHP's
json_decode()
function and SimpleXML
classes barf when trying to parse strings that include a BOM.
If you are getting a "Can't parse JSON" error when handling a request, but it looks like JSON to you, this is likely what's happening.
This plugin strips those bytes off if they exist, before any JSON/XML parsing.
Please use the issue tracker.