mirror of
https://github.com/danielstjules/Stringy.git
synced 2025-09-05 18:52:59 +02:00
Compare commits
17 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
df24ab62d2 | ||
|
f9c2e0ae36 | ||
|
0c0b352009 | ||
|
f0a5c0ec80 | ||
|
8ef4bddd15 | ||
|
d9cee68330 | ||
|
2838f3412a | ||
|
50f0cb6356 | ||
|
d6dabeee67 | ||
|
44f492c025 | ||
|
2288363663 | ||
|
f22117862b | ||
|
eb13cc35d6 | ||
|
9b6bddcb20 | ||
|
67f16c9423 | ||
|
3708b6ba90 | ||
|
5c50a58bb8 |
@@ -26,6 +26,10 @@ matrix:
|
|||||||
env: polyfill='true'
|
env: polyfill='true'
|
||||||
- php: 7.0
|
- php: 7.0
|
||||||
env: polyfill='false'
|
env: polyfill='false'
|
||||||
|
- php: 7.1
|
||||||
|
env: polyfill='true'
|
||||||
|
- php: 7.1
|
||||||
|
env: polyfill='false'
|
||||||
|
|
||||||
install: travis_retry composer install --no-interaction --prefer-source
|
install: travis_retry composer install --no-interaction --prefer-source
|
||||||
|
|
||||||
|
@@ -1,3 +1,12 @@
|
|||||||
|
### 3.1.0 (2017-06-11)
|
||||||
|
* Add $language support to slugify
|
||||||
|
* Add bg specific transliteration
|
||||||
|
* ЬЪ/ьъ handling is now language-specific
|
||||||
|
|
||||||
|
### 3.0.1 (2017-04-12)
|
||||||
|
* Don't replace @ in toAscii
|
||||||
|
* Use normal replacement for @ in slugify, e.g. user@home => user-home
|
||||||
|
|
||||||
### 3.0.0 (2017-03-08)
|
### 3.0.0 (2017-03-08)
|
||||||
|
|
||||||
* Breaking change: added $language parameter to toAscii, before
|
* Breaking change: added $language parameter to toAscii, before
|
||||||
|
172
README.md
172
README.md
@@ -1,7 +1,7 @@
|
|||||||

|

|
||||||
|
|
||||||
A PHP string manipulation library with multibyte support. Compatible with PHP
|
A PHP string manipulation library with multibyte support. Compatible with PHP
|
||||||
5.4+, PHP 7, and HHVM.
|
5.4+, PHP 7+, and HHVM.
|
||||||
|
|
||||||
``` php
|
``` php
|
||||||
s('string')->toTitleCase()->ensureRight('y') == 'Stringy'
|
s('string')->toTitleCase()->ensureRight('y') == 'Stringy'
|
||||||
@@ -26,126 +26,127 @@ documentation.
|
|||||||
* [Instance methods](#instance-methods)
|
* [Instance methods](#instance-methods)
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[append](#appendstring-string)</td>
|
<td><a href="#appendstring-string">append</a></td>
|
||||||
<td>[at](#atint-index)</td>
|
<td><a href="#atint-index">at</a></td>
|
||||||
<td>[between](#betweenstring-start-string-end--int-offset)</td>
|
<td><a href="#betweenstring-start-string-end--int-offset">between</a></td>
|
||||||
<td>[camelize](#camelize)</td>
|
<td><a href="#camelize">camelize</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[chars](#chars)</td>
|
<td><a href="#chars">chars</a></td>
|
||||||
<td>[collapseWhitespace](#collapsewhitespace)</td>
|
<td><a href="#collapsewhitespace">collapseWhitespace</a></td>
|
||||||
<td>[contains](#containsstring-needle--boolean-casesensitive--true-)</td>
|
<td><a href="#containsstring-needle--boolean-casesensitive--true-">contains</a></td>
|
||||||
<td>[containsAll](#containsallarray-needles--boolean-casesensitive--true-)</td>
|
<td><a href="#containsallarray-needles--boolean-casesensitive--true-">containsAll</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[containsAny](#containsanyarray-needles--boolean-casesensitive--true-)</td>
|
<td><a href="#containsanyarray-needles--boolean-casesensitive--true-">containsAny</a></td>
|
||||||
<td>[countSubstr](#countsubstrstring-substring--boolean-casesensitive--true-)</td>
|
<td><a href="#countsubstrstring-substring--boolean-casesensitive--true-">countSubstr</a></td>
|
||||||
<td>[dasherize](#dasherize)</td>
|
<td><a href="#dasherize">dasherize</a></td>
|
||||||
<td>[delimit](#delimitint-delimiter)</td>
|
<td><a href="#delimitint-delimiter">delimit</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[endsWith](#endswithstring-substring--boolean-casesensitive--true-)</td>
|
<td><a href="#endswithstring-substring--boolean-casesensitive--true-">endsWith</a></td>
|
||||||
<td>[endsWithAny](#endswithanystring-substrings--boolean-casesensitive--true-)</td>
|
<td><a href="#endswithanystring-substrings--boolean-casesensitive--true-">endsWithAny</a></td>
|
||||||
<td>[ensureLeft](#ensureleftstring-substring)</td>
|
<td><a href="#ensureleftstring-substring">ensureLeft</a></td>
|
||||||
<td>[ensureRight](#ensurerightstring-substring)</td>
|
<td><a href="#ensurerightstring-substring">ensureRight</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[first](#firstint-n)</td>
|
<td><a href="#firstint-n">first</a></td>
|
||||||
<td>[getEncoding](#getencoding)</td>
|
<td><a href="#getencoding">getEncoding</a></td>
|
||||||
<td>[hasLowerCase](#haslowercase)</td>
|
<td><a href="#haslowercase">hasLowerCase</a></td>
|
||||||
<td>[hasUpperCase](#hasuppercase)</td>
|
<td><a href="#hasuppercase">hasUpperCase</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[htmlDecode](#htmldecode)</td>
|
<td><a href="#htmldecode">htmlDecode</a></td>
|
||||||
<td>[htmlEncode](#htmlencode)</td>
|
<td><a href="#htmlencode">htmlEncode</a></td>
|
||||||
<td>[humanize](#humanize)</td>
|
<td><a href="#humanize">humanize</a></td>
|
||||||
<td>[indexOf](#indexofstring-needle--offset--0-)</td>
|
<td><a href="#indexofstring-needle--offset--0-">indexOf</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[indexOfLast](#indexoflaststring-needle--offset--0-)</td>
|
<td><a href="#indexoflaststring-needle--offset--0-">indexOfLast</a></td>
|
||||||
<td>[insert](#insertint-index-string-substring)</td>
|
<td><a href="#insertint-index-string-substring">insert</a></td>
|
||||||
<td>[isAlpha](#isalpha)</td>
|
<td><a href="#isalpha">isAlpha</a></td>
|
||||||
<td>[isAlphanumeric](#isalphanumeric)</td>
|
<td><a href="#isalphanumeric">isAlphanumeric</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[isBase64](#isbase64)</td>
|
<td><a href="#isbase64">isBase64</a></td>
|
||||||
<td>[isBlank](#isblank)</td>
|
<td><a href="#isblank">isBlank</a></td>
|
||||||
<td>[isHexadecimal](#ishexadecimal)</td>
|
<td><a href="#ishexadecimal">isHexadecimal</a></td>
|
||||||
<td>[isJson](#isjson)</td>
|
<td><a href="#isjson">isJson</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[isLowerCase](#islowercase)</td>
|
<td><a href="#islowercase">isLowerCase</a></td>
|
||||||
<td>[isSerialized](#isserialized)</td>
|
<td><a href="#isserialized">isSerialized</a></td>
|
||||||
<td>[isUpperCase](#isuppercase)</td>
|
<td><a href="#isuppercase">isUpperCase</a></td>
|
||||||
<td>[last](#lastint-n)</td>
|
<td><a href="#lastint-n">last</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[length](#length)</td>
|
<td><a href="#length">length</a></td>
|
||||||
<td>[lines](#lines)</td>
|
<td><a href="#lines">lines</a></td>
|
||||||
<td>[longestCommonPrefix](#longestcommonprefixstring-otherstr)</td>
|
<td><a href="#longestcommonprefixstring-otherstr">longestCommonPrefix</a></td>
|
||||||
<td>[longestCommonSuffix](#longestcommonsuffixstring-otherstr)</td>
|
<td><a href="#longestcommonsuffixstring-otherstr">longestCommonSuffix</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[longestCommonSubstring](#longestcommonsubstringstring-otherstr)</td>
|
<td><a href="#longestcommonsubstringstring-otherstr">longestCommonSubstring</a></td>
|
||||||
<td>[lowerCaseFirst](#lowercasefirst)</td>
|
<td><a href="#lowercasefirst">lowerCaseFirst</a></td>
|
||||||
<td>[pad](#padint-length--string-padstr-----string-padtype--right-)</td>
|
<td><a href="#padint-length--string-padstr-----string-padtype--right-">pad</a></td>
|
||||||
<td>[padBoth](#padbothint-length--string-padstr----)</td>
|
<td><a href="#padbothint-length--string-padstr----">padBoth</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[padLeft](#padleftint-length--string-padstr----)</td>
|
<td><a href="#padleftint-length--string-padstr----">padLeft</a></td>
|
||||||
<td>[padRight](#padrightint-length--string-padstr----)</td>
|
<td><a href="#padrightint-length--string-padstr----">padRight</a></td>
|
||||||
<td>[prepend](#prependstring-string)</td>
|
<td><a href="#prependstring-string">prepend</a></td>
|
||||||
<td>[regexReplace](#regexreplacestring-pattern-string-replacement--string-options--msr)</td>
|
<td><a href="#regexreplacestring-pattern-string-replacement--string-options--msr">regexReplace</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[removeLeft](#removeleftstring-substring)</td>
|
<td><a href="#removeleftstring-substring">removeLeft</a></td>
|
||||||
<td>[removeRight](#removerightstring-substring)</td>
|
<td><a href="#removerightstring-substring">removeRight</a></td>
|
||||||
<td>[repeat](#repeatint-multiplier)</td>
|
<td><a href="#repeatint-multiplier">repeat</a></td>
|
||||||
<td>[replace](#replacestring-search-string-replacement)</td>
|
<td><a href="#replacestring-search-string-replacement">replace</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[reverse](#reverse)</td>
|
<td><a href="#reverse">reverse</a></td>
|
||||||
<td>[safeTruncate](#safetruncateint-length--string-substring---)</td>
|
<td><a href="#safetruncateint-length--string-substring---">safeTruncate</a></td>
|
||||||
<td>[shuffle](#shuffle)</td>
|
<td><a href="#shuffle">shuffle</a></td>
|
||||||
<td>[slugify](#slugify-string-replacement----)</td>
|
<td><a href="#slugify-string-replacement-----string-language--en">slugify</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[slice](#sliceint-start--int-end-)</td>
|
<td><a href="#sliceint-start--int-end-">slice</a></td>
|
||||||
<td>[split](#splitstring-pattern--int-limit-)</td>
|
<td><a href="#splitstring-pattern--int-limit-">split</a></td>
|
||||||
<td>[startsWith](#startswithstring-substring--boolean-casesensitive--true-)</td>
|
<td><a href="#startswithstring-substring--boolean-casesensitive--true-">startsWith</a></td>
|
||||||
<td>[startsWithAny](#startswithanystring-substrings--boolean-casesensitive--true-)</td>
|
<td><a href="#startswithanystring-substrings--boolean-casesensitive--true-">startsWithAny</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[stripWhitespace](#stripwhitespace)</td>
|
<td><a href="#stripwhitespace">stripWhitespace</a></td>
|
||||||
<td>[substr](#substrint-start--int-length-)</td>
|
<td><a href="#substrint-start--int-length-">substr</a></td>
|
||||||
<td>[surround](#surroundstring-substring)</td>
|
<td><a href="#surroundstring-substring">surround</a></td>
|
||||||
<td>[swapCase](#swapcase)</td>
|
<td><a href="#swapcase">swapCase</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[tidy](#tidy)</td>
|
<td><a href="#tidy">tidy</a></td>
|
||||||
<td>[titleize](#titleize-array-ignore)</td>
|
<td><a href="#titleize-array-ignore">titleize</a></td>
|
||||||
<td>[toAscii](#toascii-string-locale--en--bool-removeunsupported--true-)</td>
|
<td><a href="#toascii-string-language--en--bool-removeunsupported--true-">toAscii</a></td>
|
||||||
<td>[toBoolean](#toboolean)</td>
|
<td><a href="#toboolean">toBoolean</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[toLowerCase](#tolowercase)</td>
|
<td><a href="#tolowercase">toLowerCase</a></td>
|
||||||
<td>[toSpaces](#tospaces-tablength--4-)</td>
|
<td><a href="#tospaces-tablength--4-">toSpaces</a></td>
|
||||||
<td>[toTabs](#totabs-tablength--4-)</td>
|
<td><a href="#totabs-tablength--4-">toTabs</a></td>
|
||||||
<td>[toTitleCase](#totitlecase)</td>
|
<td><a href="#totitlecase">toTitleCase</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[toUpperCase](#touppercase)</td>
|
<td><a href="#touppercase">toUpperCase</a></td>
|
||||||
<td>[trim](#trim-string-chars)</td>
|
<td><a href="#trim-string-chars">trim</a></td>
|
||||||
<td>[trimLeft](#trimleft-string-chars)</td>
|
<td><a href="#trimleft-string-chars">trimLeft</a></td>
|
||||||
<td>[trimRight](#trimright-string-chars)</td>
|
<td><a href="#trimright-string-chars">trimRight</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>[truncate](#truncateint-length--string-substring---)</td>
|
<td><a href="#truncateint-length--string-substring---">truncate</a></td>
|
||||||
<td>[underscored](#underscored)</td>
|
<td><a href="#underscored">underscored</a></td>
|
||||||
<td>[upperCamelize](#uppercamelize)</td>
|
<td><a href="#uppercamelize">upperCamelize</a></td>
|
||||||
<td>[upperCaseFirst](#uppercasefirst)</td>
|
<td><a href="#uppercasefirst">upperCaseFirst</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
* [Extensions](#extensions)
|
* [Extensions](#extensions)
|
||||||
* [Tests](#tests)
|
* [Tests](#tests)
|
||||||
* [License](#license)
|
* [License](#license)
|
||||||
@@ -179,7 +180,7 @@ in your composer.json file:
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
"require": {
|
"require": {
|
||||||
"danielstjules/stringy": "~3.0"
|
"danielstjules/stringy": "~3.1.0"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -809,13 +810,14 @@ random order.
|
|||||||
s('fòôbàř')->shuffle(); // 'àôřbòf'
|
s('fòôbàř')->shuffle(); // 'àôřbòf'
|
||||||
```
|
```
|
||||||
|
|
||||||
##### slugify([, string $replacement = '-' ])
|
##### slugify([, string $replacement = '-' [, string $language = 'en']])
|
||||||
|
|
||||||
Converts the string into an URL slug. This includes replacing non-ASCII
|
Converts the string into an URL slug. This includes replacing non-ASCII
|
||||||
characters with their closest ASCII equivalents, removing remaining
|
characters with their closest ASCII equivalents, removing remaining
|
||||||
non-ASCII and non-alphanumeric characters, and replacing whitespace with
|
non-ASCII and non-alphanumeric characters, and replacing whitespace with
|
||||||
$replacement. The replacement defaults to a single dash, and the string
|
$replacement. The replacement defaults to a single dash, and the string
|
||||||
is also converted to lowercase.
|
is also converted to lowercase. The language of the source string can
|
||||||
|
also be supplied for language-specific transliteration.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
s('Using strings like fòô bàř')->slugify(); // 'using-strings-like-foo-bar'
|
s('Using strings like fòô bàř')->slugify(); // 'using-strings-like-foo-bar'
|
||||||
@@ -919,7 +921,7 @@ s('i like to watch television')->titleize($ignore);
|
|||||||
// 'I Like to Watch Television'
|
// 'I Like to Watch Television'
|
||||||
```
|
```
|
||||||
|
|
||||||
##### toAscii([, string $locale = 'en' [, bool $removeUnsupported = true ]])
|
##### toAscii([, string $language = 'en' [, bool $removeUnsupported = true ]])
|
||||||
|
|
||||||
Returns an ASCII version of the string. A set of non-ASCII characters are
|
Returns an ASCII version of the string. A set of non-ASCII characters are
|
||||||
replaced with their closest ASCII counterparts, and the rest are removed
|
replaced with their closest ASCII counterparts, and the rest are removed
|
||||||
|
@@ -1157,15 +1157,18 @@ class Stringy implements Countable, IteratorAggregate, ArrayAccess
|
|||||||
* characters with their closest ASCII equivalents, removing remaining
|
* characters with their closest ASCII equivalents, removing remaining
|
||||||
* non-ASCII and non-alphanumeric characters, and replacing whitespace with
|
* non-ASCII and non-alphanumeric characters, and replacing whitespace with
|
||||||
* $replacement. The replacement defaults to a single dash, and the string
|
* $replacement. The replacement defaults to a single dash, and the string
|
||||||
* is also converted to lowercase.
|
* is also converted to lowercase. The language of the source string can
|
||||||
|
* also be supplied for language-specific transliteration.
|
||||||
*
|
*
|
||||||
* @param string $replacement The string used to replace whitespace
|
* @param string $replacement The string used to replace whitespace
|
||||||
|
* @param string $language Language of the source string
|
||||||
* @return static Object whose $str has been converted to an URL slug
|
* @return static Object whose $str has been converted to an URL slug
|
||||||
*/
|
*/
|
||||||
public function slugify($replacement = '-')
|
public function slugify($replacement = '-', $language = 'en')
|
||||||
{
|
{
|
||||||
$stringy = $this->toAscii();
|
$stringy = $this->toAscii($language);
|
||||||
|
|
||||||
|
$stringy->str = str_replace('@', $replacement, $stringy);
|
||||||
$quotedReplacement = preg_quote($replacement);
|
$quotedReplacement = preg_quote($replacement);
|
||||||
$pattern = "/[^a-zA-Z\d\s-_$quotedReplacement]/u";
|
$pattern = "/[^a-zA-Z\d\s-_$quotedReplacement]/u";
|
||||||
$stringy->str = preg_replace($pattern, '', $stringy);
|
$stringy->str = preg_replace($pattern, '', $stringy);
|
||||||
@@ -1697,7 +1700,7 @@ class Stringy implements Countable, IteratorAggregate, ArrayAccess
|
|||||||
'ᾀ', 'ᾁ', 'ᾂ', 'ᾃ', 'ᾄ', 'ᾅ', 'ᾆ', 'ᾇ', 'ὰ', 'ά',
|
'ᾀ', 'ᾁ', 'ᾂ', 'ᾃ', 'ᾄ', 'ᾅ', 'ᾆ', 'ᾇ', 'ὰ', 'ά',
|
||||||
'ᾰ', 'ᾱ', 'ᾲ', 'ᾳ', 'ᾴ', 'ᾶ', 'ᾷ', 'а', 'أ', 'အ',
|
'ᾰ', 'ᾱ', 'ᾲ', 'ᾳ', 'ᾴ', 'ᾶ', 'ᾷ', 'а', 'أ', 'အ',
|
||||||
'ာ', 'ါ', 'ǻ', 'ǎ', 'ª', 'ა', 'अ', 'ا', 'a', 'ä'],
|
'ာ', 'ါ', 'ǻ', 'ǎ', 'ª', 'ა', 'अ', 'ا', 'a', 'ä'],
|
||||||
'b' => ['б', 'β', 'Ъ', 'Ь', 'ب', 'ဗ', 'ბ', 'b'],
|
'b' => ['б', 'β', 'ب', 'ဗ', 'ბ', 'b'],
|
||||||
'c' => ['ç', 'ć', 'č', 'ĉ', 'ċ', 'c'],
|
'c' => ['ç', 'ć', 'č', 'ĉ', 'ċ', 'c'],
|
||||||
'd' => ['ď', 'ð', 'đ', 'ƌ', 'ȡ', 'ɖ', 'ɗ', 'ᵭ', 'ᶁ', 'ᶑ',
|
'd' => ['ď', 'ð', 'đ', 'ƌ', 'ȡ', 'ɖ', 'ɗ', 'ᵭ', 'ᶁ', 'ᶑ',
|
||||||
'д', 'δ', 'د', 'ض', 'ဍ', 'ဒ', 'დ', 'd'],
|
'д', 'δ', 'د', 'ض', 'ဍ', 'ဒ', 'დ', 'd'],
|
||||||
@@ -1747,7 +1750,6 @@ class Stringy implements Countable, IteratorAggregate, ArrayAccess
|
|||||||
'aa' => ['ع', 'आ', 'آ'],
|
'aa' => ['ع', 'आ', 'آ'],
|
||||||
'ae' => ['æ', 'ǽ'],
|
'ae' => ['æ', 'ǽ'],
|
||||||
'ai' => ['ऐ'],
|
'ai' => ['ऐ'],
|
||||||
'at' => ['@'],
|
|
||||||
'ch' => ['ч', 'ჩ', 'ჭ', 'چ'],
|
'ch' => ['ч', 'ჩ', 'ჭ', 'چ'],
|
||||||
'dj' => ['ђ', 'đ'],
|
'dj' => ['ђ', 'đ'],
|
||||||
'dz' => ['џ', 'ძ'],
|
'dz' => ['џ', 'ძ'],
|
||||||
@@ -1851,7 +1853,7 @@ class Stringy implements Countable, IteratorAggregate, ArrayAccess
|
|||||||
* For example, German will map 'ä' to 'ae', while other languages
|
* For example, German will map 'ä' to 'ae', while other languages
|
||||||
* will simply return 'a'.
|
* will simply return 'a'.
|
||||||
*
|
*
|
||||||
* param string $language Language of the source string
|
* @param string $language Language of the source string
|
||||||
* @return array An array of replacements.
|
* @return array An array of replacements.
|
||||||
*/
|
*/
|
||||||
protected static function langSpecificCharsArray($language = 'en')
|
protected static function langSpecificCharsArray($language = 'en')
|
||||||
@@ -1868,6 +1870,10 @@ class Stringy implements Countable, IteratorAggregate, ArrayAccess
|
|||||||
'de' => [
|
'de' => [
|
||||||
['ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü' ],
|
['ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü' ],
|
||||||
['ae', 'oe', 'ue', 'AE', 'OE', 'UE'],
|
['ae', 'oe', 'ue', 'AE', 'OE', 'UE'],
|
||||||
|
],
|
||||||
|
'bg' => [
|
||||||
|
['х', 'Х', 'щ', 'Щ', 'ъ', 'Ъ', 'ь', 'Ь'],
|
||||||
|
['h', 'H', 'sht', 'SHT', 'a', 'А', 'y', 'Y']
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@@ -671,6 +671,7 @@ class StringyTestCase extends PHPUnit_Framework_TestCase
|
|||||||
['f = z = 3', 'φ = ź = 3'],
|
['f = z = 3', 'φ = ź = 3'],
|
||||||
['perevirka', 'перевірка'],
|
['perevirka', 'перевірка'],
|
||||||
['lysaya gora', 'лысая гора'],
|
['lysaya gora', 'лысая гора'],
|
||||||
|
['user@host', 'user@host'],
|
||||||
['shchuka', 'щука'],
|
['shchuka', 'щука'],
|
||||||
['', '漢字'],
|
['', '漢字'],
|
||||||
['xin chao the gioi', 'xin chào thế giới'],
|
['xin chao the gioi', 'xin chào thế giới'],
|
||||||
@@ -1107,6 +1108,7 @@ class StringyTestCase extends PHPUnit_Framework_TestCase
|
|||||||
['another-foo-bar', 'another..& foo -.-"-...bar'],
|
['another-foo-bar', 'another..& foo -.-"-...bar'],
|
||||||
['foo-dbar', " Foo d'Bar "],
|
['foo-dbar', " Foo d'Bar "],
|
||||||
['a-string-with-dashes', 'A string-with-dashes'],
|
['a-string-with-dashes', 'A string-with-dashes'],
|
||||||
|
['user-host', 'user@host'],
|
||||||
['using-strings-like-foo-bar', 'Using strings like fòô bàř'],
|
['using-strings-like-foo-bar', 'Using strings like fòô bàř'],
|
||||||
['numbers-1234', 'numbers 1234'],
|
['numbers-1234', 'numbers 1234'],
|
||||||
['perevirka-ryadka', 'перевірка рядка'],
|
['perevirka-ryadka', 'перевірка рядка'],
|
||||||
|
Reference in New Issue
Block a user