Mercurial > hg > isophonics-drupal-site
comparison vendor/zendframework/zend-stdlib/src/StringWrapper/Native.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 7a779792577d |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 /** | |
3 * Zend Framework (http://framework.zend.com/) | |
4 * | |
5 * @link http://github.com/zendframework/zf2 for the canonical source repository | |
6 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) | |
7 * @license http://framework.zend.com/license/new-bsd New BSD License | |
8 */ | |
9 | |
10 namespace Zend\Stdlib\StringWrapper; | |
11 | |
12 use Zend\Stdlib\Exception; | |
13 use Zend\Stdlib\StringUtils; | |
14 | |
15 class Native extends AbstractStringWrapper | |
16 { | |
17 /** | |
18 * The character encoding working on | |
19 * (overwritten to change defaut encoding) | |
20 * | |
21 * @var string | |
22 */ | |
23 protected $encoding = 'ASCII'; | |
24 | |
25 /** | |
26 * Check if the given character encoding is supported by this wrapper | |
27 * and the character encoding to convert to is also supported. | |
28 * | |
29 * @param string $encoding | |
30 * @param string|null $convertEncoding | |
31 * @return bool | |
32 */ | |
33 public static function isSupported($encoding, $convertEncoding = null) | |
34 { | |
35 $encodingUpper = strtoupper($encoding); | |
36 $supportedEncodings = static::getSupportedEncodings(); | |
37 | |
38 if (!in_array($encodingUpper, $supportedEncodings)) { | |
39 return false; | |
40 } | |
41 | |
42 // This adapter doesn't support to convert between encodings | |
43 if ($convertEncoding !== null && $encodingUpper !== strtoupper($convertEncoding)) { | |
44 return false; | |
45 } | |
46 | |
47 return true; | |
48 } | |
49 | |
50 /** | |
51 * Get a list of supported character encodings | |
52 * | |
53 * @return string[] | |
54 */ | |
55 public static function getSupportedEncodings() | |
56 { | |
57 return StringUtils::getSingleByteEncodings(); | |
58 } | |
59 | |
60 /** | |
61 * Set character encoding working with and convert to | |
62 * | |
63 * @param string $encoding The character encoding to work with | |
64 * @param string|null $convertEncoding The character encoding to convert to | |
65 * @return StringWrapperInterface | |
66 */ | |
67 public function setEncoding($encoding, $convertEncoding = null) | |
68 { | |
69 $supportedEncodings = static::getSupportedEncodings(); | |
70 | |
71 $encodingUpper = strtoupper($encoding); | |
72 if (!in_array($encodingUpper, $supportedEncodings)) { | |
73 throw new Exception\InvalidArgumentException( | |
74 'Wrapper doesn\'t support character encoding "' . $encoding . '"' | |
75 ); | |
76 } | |
77 | |
78 if ($encodingUpper !== strtoupper($convertEncoding)) { | |
79 $this->convertEncoding = $encodingUpper; | |
80 } | |
81 | |
82 if ($convertEncoding !== null) { | |
83 if ($encodingUpper !== strtoupper($convertEncoding)) { | |
84 throw new Exception\InvalidArgumentException( | |
85 'Wrapper doesn\'t support to convert between character encodings' | |
86 ); | |
87 } | |
88 | |
89 $this->convertEncoding = $encodingUpper; | |
90 } else { | |
91 $this->convertEncoding = null; | |
92 } | |
93 $this->encoding = $encodingUpper; | |
94 | |
95 return $this; | |
96 } | |
97 | |
98 /** | |
99 * Returns the length of the given string | |
100 * | |
101 * @param string $str | |
102 * @return int|false | |
103 */ | |
104 public function strlen($str) | |
105 { | |
106 return strlen($str); | |
107 } | |
108 | |
109 /** | |
110 * Returns the portion of string specified by the start and length parameters | |
111 * | |
112 * @param string $str | |
113 * @param int $offset | |
114 * @param int|null $length | |
115 * @return string|false | |
116 */ | |
117 public function substr($str, $offset = 0, $length = null) | |
118 { | |
119 return substr($str, $offset, $length); | |
120 } | |
121 | |
122 /** | |
123 * Find the position of the first occurrence of a substring in a string | |
124 * | |
125 * @param string $haystack | |
126 * @param string $needle | |
127 * @param int $offset | |
128 * @return int|false | |
129 */ | |
130 public function strpos($haystack, $needle, $offset = 0) | |
131 { | |
132 return strpos($haystack, $needle, $offset); | |
133 } | |
134 } |