PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.34.2
MailPoet – Newsletters, Email Marketing, and Automation v5.34.2
5.34.3 5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / vendor-prefixed / symfony / string / CodePointString.php
mailpoet / vendor-prefixed / symfony / string Last commit date
Exception 2 years ago Inflector 8 months ago Resources 8 months ago Slugger 2 years ago AbstractString.php 2 years ago AbstractUnicodeString.php 8 months ago ByteString.php 2 years ago CodePointString.php 2 years ago LazyString.php 2 years ago UnicodeString.php 2 years ago index.php 2 years ago
CodePointString.php
198 lines
1 <?php
2 namespace MailPoetVendor\Symfony\Component\String;
3 if (!defined('ABSPATH')) exit;
4 use MailPoetVendor\Symfony\Component\String\Exception\ExceptionInterface;
5 use MailPoetVendor\Symfony\Component\String\Exception\InvalidArgumentException;
6 class CodePointString extends AbstractUnicodeString
7 {
8 public function __construct(string $string = '')
9 {
10 if ('' !== $string && !\preg_match('//u', $string)) {
11 throw new InvalidArgumentException('Invalid UTF-8 string.');
12 }
13 $this->string = $string;
14 }
15 public function append(string ...$suffix) : AbstractString
16 {
17 $str = clone $this;
18 $str->string .= 1 >= \count($suffix) ? $suffix[0] ?? '' : \implode('', $suffix);
19 if (!\preg_match('//u', $str->string)) {
20 throw new InvalidArgumentException('Invalid UTF-8 string.');
21 }
22 return $str;
23 }
24 public function chunk(int $length = 1) : array
25 {
26 if (1 > $length) {
27 throw new InvalidArgumentException('The chunk length must be greater than zero.');
28 }
29 if ('' === $this->string) {
30 return [];
31 }
32 $rx = '/(';
33 while (65535 < $length) {
34 $rx .= '.{65535}';
35 $length -= 65535;
36 }
37 $rx .= '.{' . $length . '})/us';
38 $str = clone $this;
39 $chunks = [];
40 foreach (\preg_split($rx, $this->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY) as $chunk) {
41 $str->string = $chunk;
42 $chunks[] = clone $str;
43 }
44 return $chunks;
45 }
46 public function codePointsAt(int $offset) : array
47 {
48 $str = $offset ? $this->slice($offset, 1) : $this;
49 return '' === $str->string ? [] : [\mb_ord($str->string, 'UTF-8')];
50 }
51 public function endsWith($suffix) : bool
52 {
53 if ($suffix instanceof AbstractString) {
54 $suffix = $suffix->string;
55 } elseif (\is_array($suffix) || $suffix instanceof \Traversable) {
56 return parent::endsWith($suffix);
57 } else {
58 $suffix = (string) $suffix;
59 }
60 if ('' === $suffix || !\preg_match('//u', $suffix)) {
61 return \false;
62 }
63 if ($this->ignoreCase) {
64 return \preg_match('{' . \preg_quote($suffix) . '$}iuD', $this->string);
65 }
66 return \strlen($this->string) >= \strlen($suffix) && 0 === \substr_compare($this->string, $suffix, -\strlen($suffix));
67 }
68 public function equalsTo($string) : bool
69 {
70 if ($string instanceof AbstractString) {
71 $string = $string->string;
72 } elseif (\is_array($string) || $string instanceof \Traversable) {
73 return parent::equalsTo($string);
74 } else {
75 $string = (string) $string;
76 }
77 if ('' !== $string && $this->ignoreCase) {
78 return \strlen($string) === \strlen($this->string) && 0 === \mb_stripos($this->string, $string, 0, 'UTF-8');
79 }
80 return $string === $this->string;
81 }
82 public function indexOf($needle, int $offset = 0) : ?int
83 {
84 if ($needle instanceof AbstractString) {
85 $needle = $needle->string;
86 } elseif (\is_array($needle) || $needle instanceof \Traversable) {
87 return parent::indexOf($needle, $offset);
88 } else {
89 $needle = (string) $needle;
90 }
91 if ('' === $needle) {
92 return null;
93 }
94 $i = $this->ignoreCase ? \mb_stripos($this->string, $needle, $offset, 'UTF-8') : \mb_strpos($this->string, $needle, $offset, 'UTF-8');
95 return \false === $i ? null : $i;
96 }
97 public function indexOfLast($needle, int $offset = 0) : ?int
98 {
99 if ($needle instanceof AbstractString) {
100 $needle = $needle->string;
101 } elseif (\is_array($needle) || $needle instanceof \Traversable) {
102 return parent::indexOfLast($needle, $offset);
103 } else {
104 $needle = (string) $needle;
105 }
106 if ('' === $needle) {
107 return null;
108 }
109 $i = $this->ignoreCase ? \mb_strripos($this->string, $needle, $offset, 'UTF-8') : \mb_strrpos($this->string, $needle, $offset, 'UTF-8');
110 return \false === $i ? null : $i;
111 }
112 public function length() : int
113 {
114 return \mb_strlen($this->string, 'UTF-8');
115 }
116 public function prepend(string ...$prefix) : AbstractString
117 {
118 $str = clone $this;
119 $str->string = (1 >= \count($prefix) ? $prefix[0] ?? '' : \implode('', $prefix)) . $this->string;
120 if (!\preg_match('//u', $str->string)) {
121 throw new InvalidArgumentException('Invalid UTF-8 string.');
122 }
123 return $str;
124 }
125 public function replace(string $from, string $to) : AbstractString
126 {
127 $str = clone $this;
128 if ('' === $from || !\preg_match('//u', $from)) {
129 return $str;
130 }
131 if ('' !== $to && !\preg_match('//u', $to)) {
132 throw new InvalidArgumentException('Invalid UTF-8 string.');
133 }
134 if ($this->ignoreCase) {
135 $str->string = \implode($to, \preg_split('{' . \preg_quote($from) . '}iuD', $this->string));
136 } else {
137 $str->string = \str_replace($from, $to, $this->string);
138 }
139 return $str;
140 }
141 public function slice(int $start = 0, ?int $length = null) : AbstractString
142 {
143 $str = clone $this;
144 $str->string = \mb_substr($this->string, $start, $length, 'UTF-8');
145 return $str;
146 }
147 public function splice(string $replacement, int $start = 0, ?int $length = null) : AbstractString
148 {
149 if (!\preg_match('//u', $replacement)) {
150 throw new InvalidArgumentException('Invalid UTF-8 string.');
151 }
152 $str = clone $this;
153 $start = $start ? \strlen(\mb_substr($this->string, 0, $start, 'UTF-8')) : 0;
154 $length = $length ? \strlen(\mb_substr($this->string, $start, $length, 'UTF-8')) : $length;
155 $str->string = \substr_replace($this->string, $replacement, $start, $length ?? \PHP_INT_MAX);
156 return $str;
157 }
158 public function split(string $delimiter, ?int $limit = null, ?int $flags = null) : array
159 {
160 if (1 > ($limit = $limit ?? \PHP_INT_MAX)) {
161 throw new InvalidArgumentException('Split limit must be a positive integer.');
162 }
163 if ('' === $delimiter) {
164 throw new InvalidArgumentException('Split delimiter is empty.');
165 }
166 if (null !== $flags) {
167 return parent::split($delimiter . 'u', $limit, $flags);
168 }
169 if (!\preg_match('//u', $delimiter)) {
170 throw new InvalidArgumentException('Split delimiter is not a valid UTF-8 string.');
171 }
172 $str = clone $this;
173 $chunks = $this->ignoreCase ? \preg_split('{' . \preg_quote($delimiter) . '}iuD', $this->string, $limit) : \explode($delimiter, $this->string, $limit);
174 foreach ($chunks as &$chunk) {
175 $str->string = $chunk;
176 $chunk = clone $str;
177 }
178 return $chunks;
179 }
180 public function startsWith($prefix) : bool
181 {
182 if ($prefix instanceof AbstractString) {
183 $prefix = $prefix->string;
184 } elseif (\is_array($prefix) || $prefix instanceof \Traversable) {
185 return parent::startsWith($prefix);
186 } else {
187 $prefix = (string) $prefix;
188 }
189 if ('' === $prefix || !\preg_match('//u', $prefix)) {
190 return \false;
191 }
192 if ($this->ignoreCase) {
193 return 0 === \mb_stripos($this->string, $prefix, 0, 'UTF-8');
194 }
195 return 0 === \strncmp($this->string, $prefix, \strlen($prefix));
196 }
197 }
198