mirror of
https://github.com/danielstjules/Stringy.git
synced 2025-08-12 16:24:00 +02:00
Add surround and insert
This commit is contained in:
28
README.md
28
README.md
@@ -315,16 +315,28 @@ Returns true if $haystack contains $needle, false otherwise.
|
|||||||
S::contains('Ο συγγραφέας είπε', 'συγγραφέας', 'UTF-8') // true
|
S::contains('Ο συγγραφέας είπε', 'συγγραφέας', 'UTF-8') // true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
##### surround
|
||||||
|
|
||||||
|
S::surround(string $str, string $substring)
|
||||||
|
|
||||||
|
Surrounds a string with the given substring.
|
||||||
|
|
||||||
|
```php
|
||||||
|
S::surround(' ͜ ', 'ʘ'); // 'ʘ ͜ ʘ'
|
||||||
|
```
|
||||||
|
|
||||||
|
##### insert
|
||||||
|
|
||||||
|
S::insert(string $str, int $index, string $substring [, string $encoding ])
|
||||||
|
|
||||||
|
Inserts $substring into $str at the $index provided.
|
||||||
|
|
||||||
|
```php
|
||||||
|
S::insert('fòô bà', 'ř', 6, 'UTF-8'); // 'fòô bàř'
|
||||||
|
```
|
||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
**between**
|
|
||||||
|
|
||||||
**surround**
|
|
||||||
|
|
||||||
**replace** => substr_replace
|
|
||||||
|
|
||||||
**insert**
|
|
||||||
|
|
||||||
**truncate**
|
**truncate**
|
||||||
|
|
||||||
**prune**
|
**prune**
|
||||||
|
@@ -474,7 +474,7 @@ class Stringy {
|
|||||||
* @param string $encoding The character encoding
|
* @param string $encoding The character encoding
|
||||||
* @return bool Whether or not $haystack contains $needle
|
* @return bool Whether or not $haystack contains $needle
|
||||||
*/
|
*/
|
||||||
public static function contains($haystack, $needle, $encoding) {
|
public static function contains($haystack, $needle, $encoding = null) {
|
||||||
$encoding = $encoding ?: mb_internal_encoding();
|
$encoding = $encoding ?: mb_internal_encoding();
|
||||||
|
|
||||||
if (mb_strpos($haystack, $needle, 0, $encoding) !== false)
|
if (mb_strpos($haystack, $needle, 0, $encoding) !== false)
|
||||||
@@ -483,6 +483,38 @@ class Stringy {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Surrounds a string with the given substring.
|
||||||
|
*
|
||||||
|
* @param string $str The string to surround
|
||||||
|
* @param string $substring The substring to add to both sides
|
||||||
|
* @return string The string with the substring prepended and appended
|
||||||
|
*/
|
||||||
|
public static function surround($str, $substring) {
|
||||||
|
return implode('', array($substring, $str, $substring));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserts $substring into $str at the $index provided.
|
||||||
|
*
|
||||||
|
* @param string $str String to insert into
|
||||||
|
* @param string $substring String to be inserted
|
||||||
|
* @param int $index The index at which to insert the substring
|
||||||
|
* @param string $encoding The character encoding
|
||||||
|
* @return string The resulting string after the insertion
|
||||||
|
*/
|
||||||
|
public static function insert($str, $substring, $index, $encoding = null) {
|
||||||
|
$encoding = $encoding ?: mb_internal_encoding();
|
||||||
|
|
||||||
|
if ($index > mb_strlen($str))
|
||||||
|
return $str;
|
||||||
|
|
||||||
|
$start = mb_substr($str, 0, $index, $encoding);
|
||||||
|
$end = mb_substr($str, $index, mb_strlen($str), $encoding);
|
||||||
|
|
||||||
|
return $start . $substring . $end;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
@@ -532,6 +532,49 @@ class StringyTestCase extends PHPUnit_Framework_TestCase {
|
|||||||
return $testData;
|
return $testData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider stringsForSurround
|
||||||
|
*/
|
||||||
|
public function testSurround($expected, $string, $substring) {
|
||||||
|
$result = S::surround($string, $substring);
|
||||||
|
$this->assertEquals($expected, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function stringsForSurround() {
|
||||||
|
$testData = array(
|
||||||
|
array('__foobar__', 'foobar', '__'),
|
||||||
|
array('test', 'test', ''),
|
||||||
|
array('**', '', '*'),
|
||||||
|
array('¬fòô bàř¬', 'fòô bàř', '¬'),
|
||||||
|
array('ßå∆˚ test ßå∆˚', ' test ', 'ßå∆˚')
|
||||||
|
);
|
||||||
|
|
||||||
|
return $testData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider stringsForInsert
|
||||||
|
*/
|
||||||
|
public function testInsert($expected, $string, $substring, $index,
|
||||||
|
$encoding = null) {
|
||||||
|
$result = S::insert($string, $substring, $index, $encoding);
|
||||||
|
$this->assertEquals($expected, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function stringsForInsert() {
|
||||||
|
$testData = array(
|
||||||
|
array('foo bar', 'oo bar', 'f', 0),
|
||||||
|
array('foo bar', 'f bar', 'oo', 1),
|
||||||
|
array('f bar', 'f bar', 'oo', 20),
|
||||||
|
array('foo bar', 'foo ba', 'r', 6),
|
||||||
|
array('fòô bàř', 'òô bàř', 'f', 0, 'UTF-8'),
|
||||||
|
array('fòô bàř', 'f bàř', 'òô', 1, 'UTF-8'),
|
||||||
|
array('fòô bàř', 'fòô bà', 'ř', 6, 'UTF-8')
|
||||||
|
);
|
||||||
|
|
||||||
|
return $testData;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
Reference in New Issue
Block a user