/** * Parse the given string and extract all tokens. * * @param string $string The string to parse. * @return TokenCollection */ public function parseString($string) { $result = new TokenCollection(); $pregResults = array(); $pregResult = preg_match_all($this->tokenRegex, $string, $pregResults, PREG_OFFSET_CAPTURE); if (!$pregResult) { return $result; } unset($pregResult); $result->setSourceHash(md5($string)); foreach ($pregResults[1] as $key => $pregResult) { $tokenString = $pregResults[0][$key][0]; if ($result->has($tokenString)) { $result->get($tokenString)->addOffset($pregResults[0][$key][1]); continue; } $filters = explode($this->filterDelimiter, $pregResult[0]); $tokenName = $filters[0]; unset($filters[0]); $token = new Token($pregResults[0][$key][1], $tokenString, $tokenName, null, $filters); $result->add($token); } return $result; }