当前位置:Gxlcms > PHP教程 > 换行-【PHP】在用PHP来统计一个纯英文的txt的单词的时候,为什么会这种情况?【已解决】

换行-【PHP】在用PHP来统计一个纯英文的txt的单词的时候,为什么会这种情况?【已解决】

时间:2021-07-01 10:21:17 帮助过:5人阅读

代码如下:

$value) {
        //过滤掉如I’ll、you’re、masters’s等单词
        if (strpos($value, '’') !== false || strpos($value, "'") !== false) {
            continue;
        }

        //过滤掉空
        if (empty($value) === true) {
            continue;
        }

        if (array_key_exists($value, $res)) {
            $res[$value]++;
        } else {
            $res[$value] = 1;
        }
    }

    //排序
    array_multisort($res, SORT_DESC, SORT_NUMERIC);
    return $res;
}

输出结果:

array(
    [repression] => 1
    [thoroughness] => 1
    [bleached] => 1
    [tow] => 1
    [inspired] => 1
    [uniformwell] => 1
    [panamas] => 1
    [caps
when] => 1
)

不明白为什么会把两个单词给判断成一个单词,txt呢是用sublime打开并且设置编码为UTF-8,没有用电脑自带的文本文档工具打开编辑过,另外呢,过滤标点符号的时候也有加上过滤掉rn来处理,但是没效果,所以代码去掉了。求解为什么会出现这种情况并且如何避免?

回复内容:

代码如下:

$value) {
        //过滤掉如I’ll、you’re、masters’s等单词
        if (strpos($value, '’') !== false || strpos($value, "'") !== false) {
            continue;
        }

        //过滤掉空
        if (empty($value) === true) {
            continue;
        }

        if (array_key_exists($value, $res)) {
            $res[$value]++;
        } else {
            $res[$value] = 1;
        }
    }

    //排序
    array_multisort($res, SORT_DESC, SORT_NUMERIC);
    return $res;
}

输出结果:

array(
    [repression] => 1
    [thoroughness] => 1
    [bleached] => 1
    [tow] => 1
    [inspired] => 1
    [uniformwell] => 1
    [panamas] => 1
    [caps
when] => 1
)

不明白为什么会把两个单词给判断成一个单词,txt呢是用sublime打开并且设置编码为UTF-8,没有用电脑自带的文本文档工具打开编辑过,另外呢,过滤标点符号的时候也有加上过滤掉rn来处理,但是没效果,所以代码去掉了。求解为什么会出现这种情况并且如何避免?

你的问题应该就出在没有处理换行(和回车)以及那些过滤字符被替换成了'', 应该替换成' '

$value) {
        //过滤掉空
        if (!$value) {
            continue;
        }

        //过滤掉如I’ll、you’re、masters’s等单词
        if (strpos($value, '’') !== false || strpos($value, "'") !== false) {
            continue;
        }

        if (array_key_exists($value, $res)) {
            $res[$value]++;
        } else {
            $res[$value] = 1;
        }
    }

    //排序
    array_multisort($res, SORT_DESC, SORT_NUMERIC);
    return $res;
}

不知道你的文件里的字符串是什么样子的,不过trim函数只会去掉两边的空格(rn),感觉问题会出在这里。

人气教程排行