\Horde_Db_SearchParser

This class provides a parser which can construct an SQL WHERE clause from a Google-like search expression.

The expression recognizes boolean "AND", "OR", and "NOT" (providing no operator between keywords implies "AND"), like so:

cat and dog cat or dog cat and not dog

If no operator appears between keywords or quoted strings, "AND" is assumed. A comma can be used instead of "OR":

cat dog cat, dog cat not dog

The parser recognizes parentheses, so complex expressions can be created:

cat and not (dog or puppy)

Quoted strings are also recognized, and are taken as literal keywords:

"cat and dog"

Parsing is designed to be as fuzzy as possible, so it shouldn't error unless people search for "AND", "OR", or "NOT" without quoting it or use unbalanced parentheses.

Summary

Methods
Properties
Constants
parse()
No public properties found
No constants found
_parseKeywords1()
_parseKeywords2()
_parseKeywords3()
_parseKeywords4()
No protected properties found
N/A
No private methods found
No private properties found
N/A

Methods

parse()

parse(string  $column, string  $expr) : string

Parses a keyword expression.

Parameters

string $column

This is the SQL field name the resulting expression should test against.

string $expr

This is the keyword expression we want to parse.

Throws

\Horde_Db_Exception

Returns

string —

The query expression.

_parseKeywords1()

_parseKeywords1(  $column,   $tokens) 

Parameters

$column
$tokens

_parseKeywords2()

_parseKeywords2(  $column,   $tokens) 

Parameters

$column
$tokens

_parseKeywords3()

_parseKeywords3(  $column,   $tokens) 

Parameters

$column
$tokens

_parseKeywords4()

_parseKeywords4(  $column,   $tokens) 

Parameters

$column
$tokens