public function ParseStr($qwe)
{
$qwe=trim($qwe);
$qwe=preg_replace("/ {0,}\+ {0,}/", "&", $qwe);
$qwe=preg_replace("/ {0,}([()|~]) {0,}/", "\1", $qwe);
// default query type is and
if(mb_strtolower($this->default_query_type) == 'or')
$default_op = "|";
else
$default_op = "&";
$qwe=preg_replace("/( {1,}|\&\|{1,}|\|\&{1,})/", $default_op, $qwe);
// remove unnesessary boolean operators
$qwe=preg_replace("/\|+/", "|", $qwe);
$qwe=preg_replace("/\&+/", "&", $qwe);
$qwe=preg_replace("/\~+/", "~", $qwe);
$qwe=preg_replace("/\|\&\|/", "&", $qwe);
$qwe=preg_replace("/[|&~]+$/", "", $qwe);
$qwe=preg_replace("/^[|&]+/", "", $qwe);
// transform "w1 ~w2" -> "w1 default_op ~ w2"
// ") ~w" -> ") default_op ~w"
// "w ~ (" -> "w default_op ~("
// ") w" -> ") default_op w"
// "w (" -> "w default_op ("
// ")(" -> ") default_op ("
$qwe=preg_replace("/([^&~|()]+)~([^&~|()]+)/", "\1".$default_op."~\2", $qwe);
$qwe=preg_replace("/\)~{1,}/", ")".$default_op."~", $qwe);
$qwe=preg_replace("/~{1,}\(/", ($default_op=="|"? "~|(": "&~("), $qwe);
$qwe=preg_replace("/\)([^&~|()]+)/", ")".$default_op."\1", $qwe);
$qwe=preg_replace("/([^&~|()]+)\(/", "\1".$default_op."(", $qwe);
$qwe=preg_replace("/\) *\(/", ")".$default_op."(", $qwe);
// remove unnesessary boolean operators
$qwe=preg_replace("/\|+/", "|", $qwe);
$qwe=preg_replace("/\&+/", "&", $qwe);
// remove errornous format of query - ie: '(&', '&)', '(|', '|)', '~&', '~|', '~)'
$qwe=preg_replace("/\(\&{1,}/", "(", $qwe);
$qwe=preg_replace("/\&{1,}\)/", ")", $qwe);
$qwe=preg_replace("/\~{1,}\)/", ")", $qwe);
$qwe=preg_replace("/\(\|{1,}/", "(", $qwe);
$qwe=preg_replace("/\|{1,}\)/", ")", $qwe);
$qwe=preg_replace("/\~{1,}\&{1,}/", "&", $qwe);
$qwe=preg_replace("/\~{1,}\|{1,}/", "|", $qwe);
$qwe=preg_replace("/\(\)/", "", $qwe);
$qwe=preg_replace("/^[|&]{1,}/", "", $qwe);
$qwe=preg_replace("/[|&~]{1,}$/", "", $qwe);
$qwe=preg_replace("/\|\&/", "&", $qwe);
$qwe=preg_replace("/\&\|/", "|", $qwe);
// remove unnesessary boolean operators
$qwe=preg_replace("/\|+/", "|", $qwe);
$qwe=preg_replace("/\&+/", "&", $qwe);
return($qwe);
}