首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php拆分字符串块ngrams char问题

php拆分字符串块ngrams char问题
EN

Stack Overflow用户
提问于 2017-04-22 16:25:08
回答 1查看 330关注 0票数 0

我试图从PHP中的字符串中生成n克,因为我使用以下函数:https://gist.github.com/Xeoncross/5366393

代码语言:javascript
复制
function Bigrams($word){
    $ngrams = array();
    $len = strlen($word);
    for($i=0;$i+1<$len;$i++){
        $ngrams[$i]=$word[$i].$word[$i+1];
    }
    return $ngrams;
}

$word = "abcdefg";

print_r(Bigrams($word));

这个OK返回的是预期的ngram:

代码语言:javascript
复制
[0] => ab
[1] => bc
[2] => cd
[3] => de
[4] => ef
[5] => fg

但是,对于某些Unicode字符来说,返回情况并不像预期的那样:

例: for $word =“L$word”返回:

代码语言:javascript
复制
[0] => L�
[1] => ò
[2] => �r
[3] => ri

或$word = "пожалуйста“返回:

代码语言:javascript
复制
[0] => п
[1] => ��
[2] => о
[3] => ��
[4] => ж
[5] => ��
[6] => а
[7] => ��
[8] => л

知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-22 16:41:19

使用面向unicode的字符串函数

代码语言:javascript
复制
function Bigrams($word){
    $ngrams = array();
    $len = mb_strlen($word);
    for($i=0;$i+1<$len;$i++){
        $ngrams[$i]=mb_substr($word, $i, 2);
    }
    return $ngrams;
}

$word = "пожалуйста";

print_r(Bigrams($word));

结果

代码语言:javascript
复制
Array
(
    [0] => по
    [1] => ож
    [2] => жа
    [3] => ал
    [4] => лу
    [5] => уй
    [6] => йс
    [7] => ст
    [8] => та
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43561626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档