按每个单词的每个字符序列标记字符串

时间:2013-02-28 08:07:32

标签: php regex string tokenize

我觉得这可能会被问到,但标题不同,因此我找不到完全相同的内容。

什么是最简单的方法来对字符串进行标记,以便每个单词都被标记化,以及每个单词中的每个字符序列?我认为它可以通过正则表达式拆分来完成,但也许不是......

效果将是....

Hey you guys

[H, e, y, He, Hey, y, o, u, yo, you, g, u, y, s, gu, guy, guys]

顺序并不重要,因为结果会产生与上述相同的效果。

regexp可以执行此操作,还是按顺序进行某种自定义标记?

1 个答案:

答案 0 :(得分:3)

自定义标记将是您最好的选择。

$inStr = 'Hey you guys';
$tokens = array();
$tokenList = explode(' ',$inStr);
foreach($tokenList as $bigToken) {
    $tokens[] = $bigToken; //take care of individual words
    $tokens = array_merge($tokens, str_split($bigToken)); //take care of single letters
    for($i = 2; $i < strlen($bigToken); $i++) {
        $tokens[] = substr($bigToken, 0, $i); //only need the first element here.
    }
}
print_r($tokens);

这是工作代码。 http://3v4l.org/gZn8p