コード例 #1
0
ファイル: TokenParser.php プロジェクト: liutec/cfgtokenlib
 /**
  * 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;
 }