mirror of
https://github.com/danielstjules/Stringy.git
synced 2025-08-15 09:44:14 +02:00
Add clean, standardize, and table of contents to the readme
This commit is contained in:
76
README.md
76
README.md
@@ -2,9 +2,24 @@
|
|||||||
|
|
||||||
A PHP library with a variety of multibyte string manipulation functions. Inspired by underscore.string.js.
|
A PHP library with a variety of multibyte string manipulation functions. Inspired by underscore.string.js.
|
||||||
|
|
||||||
## Usage
|
* [Requiring/Loading](#requiringloading)
|
||||||
|
* [Methods](#methods)
|
||||||
|
* [upperCaseFirst](#uppercasefirst)
|
||||||
|
* [lowerCaseFirst](#lowercasefirst)
|
||||||
|
* [camelize](#camelize)
|
||||||
|
* [upperCamelize](#uppercamelize)
|
||||||
|
* [dasherize](#dasherize)
|
||||||
|
* [underscored](#underscored)
|
||||||
|
* [swapCase](#swapcase)
|
||||||
|
* [titleize](#titleize)
|
||||||
|
* [humanize](#humanize)
|
||||||
|
* [tidy](#tidy)
|
||||||
|
* [clean](#clean)
|
||||||
|
* [standardize](#standardize)
|
||||||
|
* [Tests](#tests)
|
||||||
|
* [License](#license)
|
||||||
|
|
||||||
#### Requiring/Loading
|
## Requiring/Loading
|
||||||
|
|
||||||
If you're using Composer to manage dependencies, you can include the following in your composer.json file:
|
If you're using Composer to manage dependencies, you can include the following in your composer.json file:
|
||||||
|
|
||||||
@@ -30,13 +45,13 @@ And in either case, I'd suggest using an alias.
|
|||||||
use Stringy\Stringy as S;
|
use Stringy\Stringy as S;
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Methods
|
## Methods
|
||||||
|
|
||||||
*Note: All methods will throw a InvalidArgumentException if $string is not of type
|
*Note: All methods will throw a InvalidArgumentException if $string is not of type
|
||||||
string. Furthermore, if if $encoding is not given, it defaults to
|
string. Furthermore, if if $encoding is not given, it defaults to
|
||||||
mb_internal_encoding().*
|
mb_internal_encoding().*
|
||||||
|
|
||||||
**upperCaseFirst**
|
##### upperCaseFirst
|
||||||
|
|
||||||
S::upperCaseFirst($string [, $encoding])
|
S::upperCaseFirst($string [, $encoding])
|
||||||
|
|
||||||
@@ -47,7 +62,7 @@ support for multibyte strings.
|
|||||||
S::upperCaseFirst('σ test', 'UTF-8'); // 'Σ test'
|
S::upperCaseFirst('σ test', 'UTF-8'); // 'Σ test'
|
||||||
```
|
```
|
||||||
|
|
||||||
**lowerCaseFirst**
|
##### lowerCaseFirst
|
||||||
|
|
||||||
S::lowerCaseFirst($string [, $encoding])
|
S::lowerCaseFirst($string [, $encoding])
|
||||||
|
|
||||||
@@ -58,7 +73,7 @@ support for multibyte strings.
|
|||||||
S::lowerCaseFirst('Σ test', 'UTF-8'); // 'σ test'
|
S::lowerCaseFirst('Σ test', 'UTF-8'); // 'σ test'
|
||||||
```
|
```
|
||||||
|
|
||||||
**camelize**
|
##### camelize
|
||||||
|
|
||||||
S::camelize($string [, $encoding])
|
S::camelize($string [, $encoding])
|
||||||
|
|
||||||
@@ -70,7 +85,7 @@ dashes and underscores, and removes spaces, dashes, underscores.
|
|||||||
S::camelize('Camel-Case'); // 'camelCase'
|
S::camelize('Camel-Case'); // 'camelCase'
|
||||||
```
|
```
|
||||||
|
|
||||||
**upperCamelize**
|
##### upperCamelize
|
||||||
|
|
||||||
S::upperCamelize($string [, $encoding])
|
S::upperCamelize($string [, $encoding])
|
||||||
|
|
||||||
@@ -82,7 +97,7 @@ spaces, dashes and underscores, and removes spaces, dashes, underscores.
|
|||||||
S::upperCamelize('Upper Camel-Case'); // 'UpperCamelCase'
|
S::upperCamelize('Upper Camel-Case'); // 'UpperCamelCase'
|
||||||
```
|
```
|
||||||
|
|
||||||
**dasherize**
|
##### dasherize
|
||||||
|
|
||||||
S::dasherize($string [, $encoding])
|
S::dasherize($string [, $encoding])
|
||||||
|
|
||||||
@@ -95,7 +110,7 @@ of spaces as well as underscores.
|
|||||||
S::dasherize('TestDCase'); // 'test-d-case'
|
S::dasherize('TestDCase'); // 'test-d-case'
|
||||||
```
|
```
|
||||||
|
|
||||||
**underscored**
|
##### underscored
|
||||||
|
|
||||||
S::underscored($string [, $encoding])
|
S::underscored($string [, $encoding])
|
||||||
|
|
||||||
@@ -108,7 +123,7 @@ of spaces as well as dashes.
|
|||||||
S::underscored('TestUCase'); // 'test_u_case'
|
S::underscored('TestUCase'); // 'test_u_case'
|
||||||
```
|
```
|
||||||
|
|
||||||
**swapCase**
|
##### swapCase
|
||||||
|
|
||||||
S::swapCase($string [, $encoding])
|
S::swapCase($string [, $encoding])
|
||||||
|
|
||||||
@@ -118,7 +133,7 @@ Returns a case swapped version of a string.
|
|||||||
S::swapCase('Ντανιλ', 'UTF-8'); // 'νΤΑΝΙΛ'
|
S::swapCase('Ντανιλ', 'UTF-8'); // 'νΤΑΝΙΛ'
|
||||||
```
|
```
|
||||||
|
|
||||||
**titleize**
|
##### titleize
|
||||||
|
|
||||||
S::titleize($string [, $encoding [, $ignore]])
|
S::titleize($string [, $encoding [, $ignore]])
|
||||||
|
|
||||||
@@ -133,7 +148,7 @@ S::titleize('i like to watch DVDs at home', 'UTF-8', $ignore);
|
|||||||
// 'I Like to Watch DVDs at Home'
|
// 'I Like to Watch DVDs at Home'
|
||||||
```
|
```
|
||||||
|
|
||||||
**humanize**
|
##### humanize
|
||||||
|
|
||||||
S::humanize($string [, $encoding])
|
S::humanize($string [, $encoding])
|
||||||
|
|
||||||
@@ -144,7 +159,7 @@ and strips '_id'.
|
|||||||
S::humanize('author_id'); // 'Author'
|
S::humanize('author_id'); // 'Author'
|
||||||
```
|
```
|
||||||
|
|
||||||
**tidy**
|
##### tidy
|
||||||
|
|
||||||
S::tidy($string)
|
S::tidy($string)
|
||||||
|
|
||||||
@@ -155,12 +170,29 @@ Replaces smart quotes, ellipsis characters, and dashes from Windows-1252
|
|||||||
S::tidy('“I see…”'); // '"I see..."'
|
S::tidy('“I see…”'); // '"I see..."'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
##### clean
|
||||||
|
|
||||||
|
S::clean($string)
|
||||||
|
|
||||||
|
Trims the string and replaces consecutive whitespace characters with a
|
||||||
|
single space.
|
||||||
|
|
||||||
|
```php
|
||||||
|
S::clean(' Ο συγγραφέας '); // 'Ο συγγραφέας'
|
||||||
|
```
|
||||||
|
|
||||||
|
##### standardize
|
||||||
|
|
||||||
|
S::standardize($string)
|
||||||
|
|
||||||
|
Converts some non-ASCII characters to their closest ASCII counterparts.
|
||||||
|
|
||||||
|
```php
|
||||||
|
S::standardize('fòô bàř'); // 'foo bar'
|
||||||
|
```
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
**clean**
|
|
||||||
|
|
||||||
**standardize**
|
|
||||||
|
|
||||||
**center**
|
**center**
|
||||||
|
|
||||||
**startsWith**
|
**startsWith**
|
||||||
@@ -171,21 +203,19 @@ S::tidy('“I see…”'); // '"I see..."'
|
|||||||
|
|
||||||
**toTabs**
|
**toTabs**
|
||||||
|
|
||||||
**slugify**
|
|
||||||
|
|
||||||
**toAnchor**
|
**toAnchor**
|
||||||
|
|
||||||
|
**slugify**
|
||||||
|
|
||||||
**contains**
|
**contains**
|
||||||
|
|
||||||
**between**
|
**between**
|
||||||
|
|
||||||
**insert**
|
**insert**
|
||||||
|
|
||||||
**replace**
|
**truncate**
|
||||||
|
|
||||||
**truncateChars**
|
**prune**
|
||||||
|
|
||||||
**truncateWords**
|
|
||||||
|
|
||||||
**longestCommonPrefix**
|
**longestCommonPrefix**
|
||||||
|
|
||||||
|
@@ -221,6 +221,64 @@ class Stringy {
|
|||||||
|
|
||||||
return $tidied;
|
return $tidied;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trims the string and replaces consecutive whitespace characters with a
|
||||||
|
* single space.
|
||||||
|
*
|
||||||
|
* @param string $string The string to cleanup whitespace
|
||||||
|
* @return string The trimmed string with condensed whitespace
|
||||||
|
*/
|
||||||
|
private static function clean($string) {
|
||||||
|
return preg_replace('/\s+/u', ' ', trim($string));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts some non-ASCII characters to their closest ASCII counterparts.
|
||||||
|
*
|
||||||
|
* @param string $string A string with non-ASCII characters
|
||||||
|
* @return string The string after the replacements
|
||||||
|
*/
|
||||||
|
private static function standardize($string) {
|
||||||
|
$charsArray = array(
|
||||||
|
'a' => array('à', 'á', 'â', 'ã', 'ă', 'ä', 'å', 'ą'),
|
||||||
|
'c' => array('ć', 'č', 'ç'),
|
||||||
|
'd' => array('ď', 'đ'),
|
||||||
|
'e' => array('è', 'é', 'ê', 'ě', 'ë', 'ę'),
|
||||||
|
'g' => array('ğ'),
|
||||||
|
'i' => array('ì', 'í', 'ï', 'î'),
|
||||||
|
'l' => array('ĺ', 'ł'),
|
||||||
|
'n' => array('ń', 'ñ', 'ň'),
|
||||||
|
'o' => array('ò', 'ó', 'ô', 'õ', 'ö', 'ø'),
|
||||||
|
'r' => array('ř', 'ŕ'),
|
||||||
|
's' => array('š', 'š', 'ş'),
|
||||||
|
't' => array('ť', 'ţ'),
|
||||||
|
'u' => array('ü', 'ù', 'ú', 'û', 'µ', 'ů'),
|
||||||
|
'y' => array('ý', 'ÿ'),
|
||||||
|
'z' => array('ź', 'ž', 'ż'),
|
||||||
|
'A' => array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ă', 'Ą'),
|
||||||
|
'C' => array('Ć', 'Č', 'Ç'),
|
||||||
|
'D' => array('Ď', 'Ð'),
|
||||||
|
'E' => array('È', 'É', 'Ê', 'Ë', 'Ě', 'Ę'),
|
||||||
|
'G' => array('Ğ'),
|
||||||
|
'I' => array('Ì', 'Í', 'Ï', 'Î'),
|
||||||
|
'L' => array('Ĺ', 'Ł'),
|
||||||
|
'N' => array('Ń', 'Ñ', 'Ň'),
|
||||||
|
'O' => array('Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø'),
|
||||||
|
'R' => array('Ř', 'Ŕ'),
|
||||||
|
'S' => array('Š', 'Ş', 'Ś'),
|
||||||
|
'T' => array('Ť', 'Ţ'),
|
||||||
|
'U' => array('Ü', 'Ù', 'Ú', 'Û', 'Ů'),
|
||||||
|
'Y' => array('Ý', 'Ÿ'),
|
||||||
|
'Z' => array('Ź', 'Ž', 'Ż')
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($charsArray as $key => $value) {
|
||||||
|
$string = str_replace($value, $key, $string);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $string;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
@@ -247,6 +247,42 @@ class StringyTestCase extends PHPUnit_Framework_TestCase {
|
|||||||
return $testData;
|
return $testData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider stringsForClean
|
||||||
|
*/
|
||||||
|
public function testClean($string, $expected) {
|
||||||
|
$result = S::clean($string);
|
||||||
|
$this->assertEquals($expected, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function stringsForClean() {
|
||||||
|
$testData = array(
|
||||||
|
array(' foo bar ', 'foo bar'),
|
||||||
|
array('test string', 'test string'),
|
||||||
|
array(' Ο συγγραφέας ', 'Ο συγγραφέας')
|
||||||
|
);
|
||||||
|
|
||||||
|
return $testData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider stringsForStandardize
|
||||||
|
*/
|
||||||
|
public function testStandardize($string, $expected) {
|
||||||
|
$result = S::standardize($string);
|
||||||
|
$this->assertEquals($expected, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function stringsForStandardize() {
|
||||||
|
$testData = array(
|
||||||
|
array('fòô bàř', 'foo bar'),
|
||||||
|
array(' ŤÉŚŢ ', ' TEST '),
|
||||||
|
array('φ = ź = 3', 'φ = z = 3')
|
||||||
|
);
|
||||||
|
|
||||||
|
return $testData;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
Reference in New Issue
Block a user