2017 © Pedro PelĂĄez
 

library transcoder

Better encoding conversion for PHP

image

ddeboer/transcoder

Better encoding conversion for PHP

  • Friday, January 23, 2015
  • by ddeboer
  • Repository
  • 3 Watchers
  • 6 Stars
  • 228,354 Installations
  • PHP
  • 15 Dependents
  • 0 Suggesters
  • 17 Forks
  • 4 Open issues
  • 2 Versions
  • 7 % Grown

The README.md

Transcoder

Build Status Release, (*1)

Introduction

This is a wrapper around PHP’s mb_convert_encoding and iconv functions. This library adds:, (*2)

  • fallback from mb to iconv for unknown encodings
  • conversion of warnings to proper exceptions.

Installation

The recommended way to install the Transcoder library is through Composer:, (*3)

$ composer require ddeboer/transcoder

This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation., (*4)

Usage

Basics

Create the right transcoder for your platform and translate some strings:, (*5)

use Ddeboer\Transcoder\Transcoder;

$transcoder = Transcoder::create();
$result = $transcoder->transcode('España');

You can also manually instantiate a transcoder of your liking:, (*6)

use Ddeboer\Transcoder\MbTranscoder;

$transcoder = new MbTranscoder();

Or:, (*7)

use Ddeboer\Transcoder\IconvTranscoder;

$transcoder = new IconvTranscoder();

Source encoding

By default, the source encoding is detected automatically. However, you get much more reliable results when you specify it explicitly:, (*8)

$transcoder->transcode('España', 'iso-8859-1');

Target encoding

Specify a default target encoding as the first argument to create():, (*9)

use Ddeboer\Transcoder\Transcoder;

$isoTranscoder = Transcoder::create('iso-8859-1');

Alternatively, specify a target encoding as the third argument in a transcode() call:, (*10)

use Ddeboer\Transcoder\Transcoder;

$transcoder->transcode('España', null, 'UTF-8'); 

Error handling

PHP’s mv_convert_encoding and iconv are inconvenient to use because they generate notices and warnings instead of proper exceptions. This library fixes that:, (*11)

use Ddeboer\Transcoder\Exception\UndetectableEncodingException;
use Ddeboer\Transcoder\Exception\UnsupportedEncodingException;
use Ddeboer\Transcoder\Exception\IllegalCharacterException;

$input = 'España';

try {
    $transcoder->transcode($input);
} catch (UndetectableEncodingException $e) {
    // Failed to automatically detect $input’s encoding 
}

try {
    $transcoder->transcode($input, null, 'not-a-real-encoding');
} catch (UnsupportedEncodingException $e) {
    // ‘not-a-real-encoding’ is an unsupported encoding 
}

try {
    $transcoder->transcode('Illegal quotes: ‘ ’', null, 'iso-8859-1');
} catch (IllegalCharacterException $e) {
    // Curly quotes ‘ ’ are illegal in ISO-8859-1
}

Transcoder fallback

In general, mb_convert_encoding is faster than iconv. However, as iconv supports more encodings than mb_convert_encoding, it makes sense to combine the two., (*12)

So, the Transcoder returned from create():, (*13)

  • uses mb_convert_encoding if the mbstring PHP extension is installed;
  • if not, it uses iconv instead if the iconv extension is installed;
  • if both the mbstring and iconv extension are available, the Transcoder will first try mb_convert_encoding and fall back to iconv.

The Versions

23/01 2015

dev-master

9999999-dev

Better encoding conversion for PHP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

The Development Requires

utf-8 encoding iso charset iconv multibyte mb mb_convert_encoding

23/01 2015

1.0.0

1.0.0.0

Better encoding conversion for PHP

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

The Development Requires

utf-8 encoding iso charset iconv multibyte mb