class XmlEncoder in Feeds extensible parsers 8
Converts the encoding of an XML document to UTF-8.
Hierarchy
- class \Drupal\feeds_ex\Encoder\TextEncoder implements EncoderInterface
- class \Drupal\feeds_ex\Encoder\XmlEncoder
Expanded class hierarchy of XmlEncoder
File
- src/
Encoder/ XmlEncoder.php, line 8
Namespace
Drupal\feeds_ex\EncoderView source
class XmlEncoder extends TextEncoder {
/**
* The regex used to find the encoding.
*
* @var string
*/
protected $findRegex = '/^<\\?xml[^>]+encoding\\s*=\\s*("|\')([\\w-]+)(\\1)/';
/**
* The regex used to replace the encoding.
*
* @var string
*/
protected $replaceRegex = '/^(<\\?xml[^>]+encoding\\s*=\\s*("|\'))([\\w-]+)(\\2)/';
/**
* The replacement pattern.
*
* @var string
*/
protected $replacePattern = '$1UTF-8$4';
/**
* {@inheritdoc}
*/
public function convertEncoding($data) {
// Check for an encoding declaration in the XML prolog.
$matches = FALSE;
$encoding = 'ascii';
if (preg_match($this->findRegex, $data, $matches)) {
$encoding = $matches[2];
}
elseif ($detected = $this
->detectEncoding($data)) {
$encoding = $detected;
}
// Unsupported encodings are converted here into UTF-8.
if (in_array(strtolower($encoding), self::$utf8Compatible)) {
return $data;
}
$data = $this
->doConvert($data, $encoding);
if ($matches) {
$data = preg_replace($this->replaceRegex, $this->replacePattern, $data);
}
return $data;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
TextEncoder:: |
protected | property | The list of encodings to search for. | |
TextEncoder:: |
protected | property | Whether the current system handles mb_* functions. | |
TextEncoder:: |
protected static | property | The set of encodings compatible with UTF-8. | |
TextEncoder:: |
public | function |
Returns the configuration form to select encodings. Overrides EncoderInterface:: |
|
TextEncoder:: |
public | function |
Validates the encoding configuration form. Overrides EncoderInterface:: |
|
TextEncoder:: |
protected | function | Detects the encoding of a string. | |
TextEncoder:: |
protected | function | Performs the actual encoding conversion. | |
TextEncoder:: |
public | function |
Constructs a EncoderInterface object. Overrides EncoderInterface:: |
|
XmlEncoder:: |
protected | property | The regex used to find the encoding. | 1 |
XmlEncoder:: |
protected | property | The replacement pattern. | 1 |
XmlEncoder:: |
protected | property | The regex used to replace the encoding. | 1 |
XmlEncoder:: |
public | function |
Converts a string to UTF-8. Overrides TextEncoder:: |