You are here

class XmlEncoder in Feeds extensible parsers 8

Converts the encoding of an XML document to UTF-8.

Hierarchy

Expanded class hierarchy of XmlEncoder

File

src/Encoder/XmlEncoder.php, line 8

Namespace

Drupal\feeds_ex\Encoder
View 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

Namesort descending Modifiers Type Description Overrides
TextEncoder::$encodingList protected property The list of encodings to search for.
TextEncoder::$isMultibyte protected property Whether the current system handles mb_* functions.
TextEncoder::$utf8Compatible protected static property The set of encodings compatible with UTF-8.
TextEncoder::buildConfigurationForm public function Returns the configuration form to select encodings. Overrides EncoderInterface::buildConfigurationForm
TextEncoder::configFormValidate public function Validates the encoding configuration form. Overrides EncoderInterface::configFormValidate
TextEncoder::detectEncoding protected function Detects the encoding of a string.
TextEncoder::doConvert protected function Performs the actual encoding conversion.
TextEncoder::__construct public function Constructs a EncoderInterface object. Overrides EncoderInterface::__construct
XmlEncoder::$findRegex protected property The regex used to find the encoding. 1
XmlEncoder::$replacePattern protected property The replacement pattern. 1
XmlEncoder::$replaceRegex protected property The regex used to replace the encoding. 1
XmlEncoder::convertEncoding public function Converts a string to UTF-8. Overrides TextEncoder::convertEncoding