Tokenize字符串并知道分隔符的哪一部分被抓取

时间:2014-04-24 07:46:55

标签: php token tokenize

我喜欢使用PHP的strtok()函数来标记化字符串,并且想知道分隔符的哪个部分抓取了当前令牌。

所以这是一个例子:

#my comment
something: one, two, three

如果我现在使用:

$token = strtok($string, '#:,' . PHP_EOL);

我将my comment作为第一个令牌,因为#new line对其进行了标记。那么现在有可能获得当前令牌的起始和结束分隔符吗?

1 个答案:

答案 0 :(得分:2)

如果您正在寻找包含分隔符的方法,因为它们具有一些特殊语法含义 - 那么您应该使用语法工具。 strtok()我的分隔符不同,因为它不是此功能的意图。

相反,您可以尝试使用token_get_all()

$string = '#my comment
something: one, two, three';
//note that <?php is needed to make it parse PHP syntax:
$result = token_get_all('<?php '.$string);

-it会解析语法并将lexems拆分为结果数组(这样你就可以得到你的注释和你的字符串以及与:, e相对应的数组成员TC)。