1
0
mirror of https://github.com/danielstjules/Stringy.git synced 2025-08-07 22:06:36 +02:00

Cleanup containsAny

This commit is contained in:
Daniel St. Jules
2014-09-27 08:42:51 -07:00
parent 410ceac663
commit 1c0026ca00
5 changed files with 29 additions and 46 deletions

View File

@@ -383,9 +383,9 @@ class StaticStringy
} }
/** /**
* Returns true if the string contains any $needles, false otherwise. By default, * Returns true if the string contains any $needles, false otherwise. By
* the comparison is case-sensitive, but can be made insensitive by setting * default, the comparison is case-sensitive, but can be made insensitive
* $caseSensitive to false. * by setting $caseSensitive to false.
* *
* @param string $haystack String being checked * @param string $haystack String being checked
* @param array $needles Substrings to look for * @param array $needles Substrings to look for
@@ -393,8 +393,8 @@ class StaticStringy
* @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 containsAny($haystack, $needles, $caseSensitive = true, public static function containsAny($haystack, $needles,
$encoding = null) $caseSensitive = true, $encoding = null)
{ {
return Stringy::create($haystack, $encoding) return Stringy::create($haystack, $encoding)
->containsAny($needles, $caseSensitive); ->containsAny($needles, $caseSensitive);

View File

@@ -761,9 +761,9 @@ class Stringy implements \Countable, \IteratorAggregate, \ArrayAccess
} }
/** /**
* Returns true if the string contains any $needles, false otherwise. By default * Returns true if the string contains any $needles, false otherwise. By
* the comparison is case-sensitive, but can be made insensitive by setting * default the comparison is case-sensitive, but can be made insensitive by
* $caseSensitive to false. * setting $caseSensitive to false.
* *
* @param array $needles Substrings to look for * @param array $needles Substrings to look for
* @param bool $caseSensitive Whether or not to enforce case-sensitivity * @param bool $caseSensitive Whether or not to enforce case-sensitivity
@@ -771,17 +771,15 @@ class Stringy implements \Countable, \IteratorAggregate, \ArrayAccess
*/ */
public function containsAny($needles, $caseSensitive = true) public function containsAny($needles, $caseSensitive = true)
{ {
if ( ! empty($needles)) { if (empty($needles)) {
return false;
}
$encoding = $this->encoding; $encoding = $this->encoding;
foreach($needles as $needle) { foreach($needles as $needle) {
if ($caseSensitive) { if ($this->contains($needle, $caseSensitive)) {
$contains = mb_strpos($this->str, $needle, 0, $encoding) !== false; return true;
} else {
$contains = mb_stripos($this->str, $needle, 0, $encoding) !== false;
}
if ($contains === true) return true;
} }
} }

View File

@@ -2,7 +2,6 @@
abstract class CommonTest extends PHPUnit_Framework_TestCase abstract class CommonTest extends PHPUnit_Framework_TestCase
{ {
/** /**
* Asserts that a variable is of a Stringy instance. * Asserts that a variable is of a Stringy instance.
* *
@@ -402,32 +401,16 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
public function containsAnyProvider() public function containsAnyProvider()
{ {
return array( // One needle
// no needle $singleNeedle = array_map(function($array) {
$array[2] = array($array[2]);
return $array;
}, $this->containsProvider());
$provider = array(
// No needles
array(false, 'This string contains foo bar', array()), array(false, 'This string contains foo bar', array()),
// one needle // Multiple needles
array(true, 'This string contains foo bar', array('foo bar')),
array(true, '12398!@(*%!@# @!%#*&^%', array(' @!%#*&^%')),
array(true, 'Ο συγγραφέας είπε', array('συγγραφέας'), 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('å´¥©'), true, 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('å˚ ∆'), true, 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('øœ¬'), true, 'UTF-8'),
array(false, 'This string contains foo bar', array('Foo bar')),
array(false, 'This string contains foo bar', array('foobar')),
array(false, 'This string contains foo bar', array('foo bar ')),
array(false, 'Ο συγγραφέας είπε', array(' συγγραφέας '), true, 'UTF-8'),
array(false, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array(' ßå˚'), true, 'UTF-8'),
array(true, 'This string contains foo bar', array('Foo bar'), false),
array(true, '12398!@(*%!@# @!%#*&^%', array(' @!%#*&^%'), false),
array(true, 'Ο συγγραφέας είπε', array('ΣΥΓΓΡΑΦΈΑΣ'), false, 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('Å´¥©'), false, 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('Å˚ ∆'), false, 'UTF-8'),
array(true, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array('ØŒ¬'), false, 'UTF-8'),
array(false, 'This string contains foo bar', array('foobar'), false),
array(false, 'This string contains foo bar', array('foo bar '), false),
array(false, 'Ο συγγραφέας είπε', array(' συγγραφέας '), false, 'UTF-8'),
array(false, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array(' ßÅ˚'), false, 'UTF-8'),
// many needles
array(true, 'This string contains foo bar', array('foo', 'bar')), array(true, 'This string contains foo bar', array('foo', 'bar')),
array(true, '12398!@(*%!@# @!%#*&^%', array(' @!%#*', '&^%')), array(true, '12398!@(*%!@# @!%#*&^%', array(' @!%#*', '&^%')),
array(true, 'Ο συγγραφέας είπε', array('συγγρ', 'αφέας'), 'UTF-8'), array(true, 'Ο συγγραφέας είπε', array('συγγρ', 'αφέας'), 'UTF-8'),
@@ -450,6 +433,8 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
array(false, 'Ο συγγραφέας είπε', array(' συγγραφέας ', ' ραφέ '), false, 'UTF-8'), array(false, 'Ο συγγραφέας είπε', array(' συγγραφέας ', ' ραφέ '), false, 'UTF-8'),
array(false, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array(' ßÅ˚', ' Å˚ '), false, 'UTF-8'), array(false, 'å´¥©¨ˆßå˚ ∆∂˙©å∑¥øœ¬', array(' ßÅ˚', ' Å˚ '), false, 'UTF-8'),
); );
return array_merge($singleNeedle, $provider);
} }