. */ /** * Doctrine_Tokenizer * * @package Doctrine * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @category Object Relational Mapping * @link www.phpdoctrine.com * @since 1.0 * @version $Revision: 1080 $ * @author Konsta Vesterinen */ class Doctrine_Tokenizer { public function __construct() { } public function tokenize() { } /** * bracketExplode * * example: * * parameters: * $str = (age < 20 AND age > 18) AND email LIKE 'John@example.com' * $d = ' AND ' * $e1 = '(' * $e2 = ')' * * would return an array: * array("(age < 20 AND age > 18)", * "email LIKE 'John@example.com'") * * @param string $str * @param string $d the delimeter which explodes the string * @param string $e1 the first bracket, usually '(' * @param string $e2 the second bracket, usually ')' * */ public static function bracketExplode($str, $d = ' ', $e1 = '(', $e2 = ')') { if (is_array($d)) { $a = preg_split('/(' . implode('|', $d) . ')/', $str); $d = stripslashes($d[0]); } else { $a = explode($d, $str); } $i = 0; $term = array(); foreach($a as $key => $val) { if (empty($term[$i])) { $term[$i] = trim($val); } else { $term[$i] .= $d . trim($val); } $c1 = substr_count($term[$i], $e1); $c2 = substr_count($term[$i], $e2); if($c1 == $c2) { $i++; } } return $term; } }