tanuel/tokenizer
Composer 安装命令:
composer require tanuel/tokenizer
包简介
A tokenizer for PHP
关键字:
README 文档
README
Lightweight Zero-Dependency Tokenizer for PHP
This is a simple but powerful tokenizer written in php where you can pass your own token definitions.
Setup
composer install tanuel/tokenizer
Usage
Tip: Take a look at the unit tests for examples
1. Create a token definition with regex patterns
<?php // Token Definitions must start with T_, otherwise they won't be interpreted as Tokens use \Tanuel\Tokenizer\AbstractTokenDefinition; // The BaseTokenInterface is optional, but will provide some basic utilities use \Tanuel\Tokenizer\BaseTokenInterface; class T extends AbstractTokenDefinition implements BaseTokenInterface { /** * A single dollar sign * @pattern \$ */ const T_DOLLAR = 'T_DOLLAR'; /** * A range of digits * @pattern \d+ */ const T_DIGITS = 'T_DIGITS'; }
2. Create tokenizer and get tokens
<?php // using the token definition from above $tokenizer = new \Tanuel\Tokenizer\Tokenizer('string to tokenize $ 123', T::class); // get all tokens $t = $tokenizer->getAll(); // reset internal pointer $tokenizer->reset(); // get next token, ignoring leading whitespaces and linebreaks (T_WHITESPACE => \s+) $token = $tokenizer->next(); // get next token, don't ignore leading whitespaces or linebreaks $token = $tokenizer->next(false); // expect a certain set of tokens, else throw an exception try { $token = $tokenizer->nextOf([T::T_DOLLAR, T::T_DIGITS]); } catch (\Tanuel\Tokenizer\TokenizerException $e) { // do something with exception } // forecast next token without moving the pointer forward $forecast = $tokenizer->forecast(); // also works with expecting a certain token $forecast = $tokenizer->forecastOf([T::T_DOLLAR, T::T_DIGITS]);
3. Using the tokens
<?php /** @var $token \Tanuel\Tokenizer\Token */ // get the matched value $token->getValue(); // check if the token matches a certain name $token->eq('T_STRING', 'T_DOLLAR'); // true if it is a T_STRING or T_DOLLAR // get the token definition info $token->getDefinition()->getName(); // e.g. T_STRING $token->getDefinition()->getPattern(); // e.g. \w+ for T_STRING // get metainfo $token->getLine(); $token->getEndLine(); $token->getColumn(); $token->getEndColumn(); $token->getLineCount();
tanuel/tokenizer 适用场景与选型建议
tanuel/tokenizer 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 15 次下载、GitHub Stars 达 5, 最近一次更新时间为 2019 年 10 月 05 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「tokenizer」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 tanuel/tokenizer 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 tanuel/tokenizer 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 tanuel/tokenizer 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Library emulating the PHP internal reflection using just the tokenized source code.
A program for performing lexical analysis, written in PHP
A simple library for make Lexer and Parsers to build a language
Wrapper around PHP's tokenizer extension.
Html5 stream tokenizer/reader (not using libxml)
Rudl UDP cluster logging library (PSR4 compliant)
统计信息
- 总下载量: 15
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 5
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: GPL-3.0
- 更新时间: 2019-10-05