Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

MbString.php

Zuletzt modifiziert: 09.10.2024, 12:57 - Dateigröße: 3.27 KiB


001  <?php
002  /**
003   * Zend Framework (http://framework.zend.com/)
004   *
005   * @link      http://github.com/zendframework/zf2 for the canonical source repository
006   * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
007   * @license   http://framework.zend.com/license/new-bsd New BSD License
008   */
009   
010  namespace Zend\Stdlib\StringWrapper;
011   
012  use Zend\Stdlib\Exception;
013   
014  class MbString extends AbstractStringWrapper
015  {
016      /**
017       * List of supported character sets (upper case)
018       *
019       * @var null|string[]
020       * @link http://php.net/manual/mbstring.supported-encodings.php
021       */
022      protected static $encodings = null;
023   
024      /**
025       * Get a list of supported character encodings
026       *
027       * @return string[]
028       */
029      public static function getSupportedEncodings()
030      {
031          if (static::$encodings === null) {
032              static::$encodings = array_map('strtoupper', mb_list_encodings());
033   
034              // FIXME: Converting € (UTF-8) to ISO-8859-16 gives a wrong result
035              $indexIso885916 = array_search('ISO-8859-16', static::$encodings, true);
036              if ($indexIso885916 !== false) {
037                  unset(static::$encodings[$indexIso885916]);
038              }
039          }
040   
041          return static::$encodings;
042      }
043   
044      /**
045       * Constructor
046       *
047       * @throws Exception\ExtensionNotLoadedException
048       */
049      public function __construct()
050      {
051          if (!extension_loaded('mbstring')) {
052              throw new Exception\ExtensionNotLoadedException(
053                  'PHP extension "mbstring" is required for this wrapper'
054              );
055          }
056      }
057   
058      /**
059       * Returns the length of the given string
060       *
061       * @param string $str
062       * @return int|false
063       */
064      public function strlen($str)
065      {
066          return mb_strlen($str, $this->getEncoding());
067      }
068   
069      /**
070       * Returns the portion of string specified by the start and length parameters
071       *
072       * @param string   $str
073       * @param int      $offset
074       * @param int|null $length
075       * @return string|false
076       */
077      public function substr($str, $offset = 0, $length = null)
078      {
079          return mb_substr($str, $offset, $length, $this->getEncoding());
080      }
081   
082      /**
083       * Find the position of the first occurrence of a substring in a string
084       *
085       * @param string $haystack
086       * @param string $needle
087       * @param int    $offset
088       * @return int|false
089       */
090      public function strpos($haystack, $needle, $offset = 0)
091      {
092          return mb_strpos($haystack, $needle, $offset, $this->getEncoding());
093      }
094   
095      /**
096       * Convert a string from defined encoding to the defined convert encoding
097       *
098       * @param string  $str
099       * @param bool $reverse
100       * @return string|false
101       */
102      public function convert($str, $reverse = false)
103      {
104          $encoding        = $this->getEncoding();
105          $convertEncoding = $this->getConvertEncoding();
106   
107          if ($convertEncoding === null) {
108              throw new Exception\LogicException(
109                  'No convert encoding defined'
110              );
111          }
112   
113          if ($encoding === $convertEncoding) {
114              return $str;
115          }
116   
117          $fromEncoding = $reverse ? $convertEncoding : $encoding;
118          $toEncoding   = $reverse ? $encoding : $convertEncoding;
119          return mb_convert_encoding($str, $toEncoding, $fromEncoding);
120      }
121  }
122