@@ -148,8 +148,9 @@ protected function findPositionWithinString($sql, $value, $expr_type) {
148148 }
149149
150150 // if we have a quoted string, we every character is allowed after it
151- // see issue 137
152- $ quoted = ($ sql [$ pos + strlen ($ value ) - 1 ] === '` ' );
151+ // see issues 137 and 361
152+ $ quotedBefore = in_array ($ sql [$ pos ], array ('` ' , '( ' ), true );
153+ $ quotedAfter = in_array ($ sql [$ pos + strlen ($ value ) - 1 ], array ('` ' , ') ' ), true );
153154 $ after = "" ;
154155 if (isset ($ sql [$ pos + strlen ($ value )])) {
155156 $ after = $ sql [$ pos + strlen ($ value )];
@@ -178,10 +179,11 @@ protected function findPositionWithinString($sql, $value, $expr_type) {
178179 // in all other cases we accept
179180 // whitespace, comma, operators, parenthesis and end_of_string
180181
181- $ ok = ($ before === "" || in_array ($ before , self ::$ allowedOnOther , true ));
182+ $ ok = ($ before === "" || in_array ($ before , self ::$ allowedOnOther , true )
183+ || ($ quotedBefore && (strtolower ($ before ) >= 'a ' && strtolower ($ before ) <= 'z ' )));
182184 $ ok = $ ok
183185 && ($ after === "" || in_array ($ after , self ::$ allowedOnOther , true )
184- || ($ quoted && (strtolower ($ after ) >= 'a ' && strtolower ($ after ) <= 'z ' )));
186+ || ($ quotedAfter && (strtolower ($ after ) >= 'a ' && strtolower ($ after ) <= 'z ' )));
185187
186188 if ($ ok ) {
187189 break ;
0 commit comments