diff --git a/src/DataSources/ArraySource.php b/src/DataSources/ArraySource.php index 8166abf4..524a1605 100644 --- a/src/DataSources/ArraySource.php +++ b/src/DataSources/ArraySource.php @@ -93,7 +93,7 @@ public function compare($actual, $condition, $expected) $cond = str_replace(' ?', '', $condition); if ($cond === 'LIKE') { - $pattern = str_replace('%', '(.|\s)*', preg_quote($expected)); + $pattern = str_replace('%', '(.|\s)*', preg_quote($expected, '/')); return (bool) preg_match("/^{$pattern}$/i", $actual); } elseif ($cond === '=') { diff --git a/tests/DataSources/ArraySource.phpt b/tests/DataSources/ArraySource.phpt index 007e898d..d2ada57a 100644 --- a/tests/DataSources/ArraySource.phpt +++ b/tests/DataSources/ArraySource.phpt @@ -72,6 +72,7 @@ class ArraySourceTest extends DataSourceTestCase Assert::true($source->compare('Lucie', 'LIKE ?', '%Lu%')); Assert::true($source->compare('Lucie', 'LIKE ?', '%ie')); Assert::true($source->compare('Lucie', 'LIKE ?', 'lu%')); + Assert::true($source->compare('Lucie/Lucy', 'LIKE ?', 'Lucie/L%')); Assert::false($source->compare('Lucie', 'LIKE ?', 'ie%')); Assert::false($source->compare('Lucie', 'LIKE ?', '%lu'));