Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fossar/guzzle-transcoder
Guzzle plugin that converts responses to UTF-8
https://github.com/fossar/guzzle-transcoder
encoding guzzle iconv php transcoder unicode
Last synced: 2 months ago
JSON representation
Guzzle plugin that converts responses to UTF-8
- Host: GitHub
- URL: https://github.com/fossar/guzzle-transcoder
- Owner: fossar
- License: mit
- Created: 2017-02-12T16:20:47.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-03-15T22:24:59.000Z (10 months ago)
- Last Synced: 2024-10-28T15:40:04.691Z (3 months ago)
- Topics: encoding, guzzle, iconv, php, transcoder, unicode
- Language: PHP
- Homepage:
- Size: 78.1 KB
- Stars: 4
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# guzzle-transcoder
[![Packagist Version](https://img.shields.io/packagist/v/fossar/guzzle-transcoder)](https://packagist.org/packages/fossar/guzzle-transcoder)
This package provides a [Guzzle] 6/7 middleware that transparently converts documents obtained by Guzzle from its native encoding to UTF-8 (or any other specified encoding). It supports the following features:
- Detection of charset from [`Content-Type`] HTTP header.
- Detection of charset from [`meta` element] in HTML document.
- Detection of charset from [XML declaration] in RSS and other XML documents.
- Updating the `Content-Type` header in the `Response` object according to target encoding.
- Updating the metadata in the `Response` body according to target encoding (not enabled by default).## Installation
It is recommended to install the library using [Composer]:
```ShellSession
composer require fossar/guzzle-transcoder
```## Usage
### Basic example```php
use Fossar\GuzzleTranscoder\GuzzleTranscoder;
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;$stack = HandlerStack::create();
$stack->push(new GuzzleTranscoder);
$client = new Client(['handler' => $stack]);$url = 'https://www.myseosolution.de/scripts/encoding-test.php?enc=iso'; // request website with iso-8859-1 encoding
$req = $client->get($url);
echo $req->getBody();
```### Full example
```php
use Fossar\GuzzleTranscoder\GuzzleTranscoder;
use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;$stack = HandlerStack::create();
$stack->push(new GuzzleTranscoder([
'targetEncoding' => 'windows-1252',
// Swap the default settings:
'replaceHeaders' => false,
'replaceContent' => true,
]));
$client = new Client(['handler' => $stack]);$url = 'https://www.myseosolution.de/scripts/encoding-test.php?enc=iso'; // request website with iso-8859-1 encoding
$req = $client->get($url);
echo $req->getHeaderLine('Content-Type') . "\n"; // HTTP header will remain unchanged
echo $req->getBody();
```## Credits
It is largely based on Pascal Landau’s [guzzle-auto-charset-encoding-subscriber] and [web-utility] libraries.
We are using [Transcoder] library. This allows us to fall back to `iconv` when `mbstring` is not available or an encoding is not supported by it.
The source code is available under the terms of [MIT license](LICENSE.md)
[`Content-Type`]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type
[`meta` element]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#charset
[XML declaration]: https://developer.mozilla.org/en-US/docs/Web/XML/XML_introduction#xml_declaration
[Composer]: https://getcomposer.org/
[Guzzle]: https://github.com/guzzle/guzzle
[Transcoder]: https://github.com/fossar/transcoder
[guzzle-auto-charset-encoding-subscriber]: https://github.com/paslandau/guzzle-auto-charset-encoding-subscriber
[web-utility]: https://github.com/paslandau/web-utility