From 170ec2c525a966bd55fe6255e54f1530bfea9e44 Mon Sep 17 00:00:00 2001 From: Greg Anderson Date: Thu, 4 Oct 2018 11:13:13 -0700 Subject: [PATCH] Allow 'ContainsOp' to operate on arrays. Allow value for filter default field to contain spaces. --- src/OperatorFactory.php | 2 +- src/Operators/ContainsOp.php | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/OperatorFactory.php b/src/OperatorFactory.php index c3ab729..1cedfdd 100644 --- a/src/OperatorFactory.php +++ b/src/OperatorFactory.php @@ -83,7 +83,7 @@ protected function splitOnOperator($expression, $defaultField = false) { // If there is a default field, then any expression that is missing // an operator will be interpreted as "default field contains value". - if (preg_match('#^[a-zA-Z0-9_.:-]+$#', $expression) && ($defaultField !== false)) { + if (preg_match('#^[a-zA-Z0-9 _.:-]+$#', $expression) && ($defaultField !== false)) { return [$defaultField, '*=', $expression]; } if (!preg_match('#([^!~*=]*)(!?~?\*?=)(.*)#', $expression, $matches)) { diff --git a/src/Operators/ContainsOp.php b/src/Operators/ContainsOp.php index 7dc1049..5e3913f 100644 --- a/src/Operators/ContainsOp.php +++ b/src/Operators/ContainsOp.php @@ -27,6 +27,9 @@ public function __construct($key, $comparitor) public function test(Data $row) { $value = $row->get($this->key); + if (is_array($value)) { + return in_array($this->comparitor, $value); + } return strpos($value, $this->comparitor) !== false; }