84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
1、怎样将php中出现的中文字符一个一个截取出来,有没有不用mb_substr的方法。2、比如我写一个统计文件中(单个文件超过100万字)中文各字符出现次数的,java中用charAt方法即可遍历字符,程序写下来也就几秒,但是在php中用mb_库十分慢,等了好几分钟都没有结果。3、附java实现的代码 java实现统计字符出现次数
人生最曼妙的风景,竟是内心的淡定与从容!
经测试,我的代码应该是没有问题的,请指正:
$str = file_get_contents("hong.txt"); preg_match_all("/./u", $str, $arr); $store = []; foreach($arr[0] as $value){ if(array_key_exists($value, $store)){ $store[$value]++; }else{ $store[$value] = 1; } } asort($store); var_dump($store);
此段代码在php7环境下对红楼梦进行操作(148万字),总耗时0.464s。
中文字符串分隔
<?php $tempaddtext = "php对UTF8字体串进行单字分割返回数组"; $cind = 0; $arr_cont = array(); for ($i = 0; $i < strlen($tempaddtext); $i++) { if (strlen(substr($tempaddtext, $cind, 1)) > 0) { if (ord(substr($tempaddtext, $cind, 1)) < 192) { if (substr($tempaddtext, $cind, 1) != " ") { array_push($arr_cont, substr($tempaddtext, $cind, 1)); } $cind++; } elseif (ord(substr($tempaddtext, $cind, 1)) < 224) { array_push($arr_cont, substr($tempaddtext, $cind, 2)); $cind += 2; } else { array_push($arr_cont, substr($tempaddtext, $cind, 3)); $cind += 3; } } } print_r($arr_cont);
试试这个
<?php $str = "abc中国cn"; $keys = []; for($i = 0, $l = strlen($str); $i < $l; $i++) { $key = ord($str[$i]); if ($key < 192) { $key = $str[$i]; } else if ($key < 224) { $key = $str[$i] . $str[$i+1]; $i ++; } else { $key = $str[$i] . $str[$i+1] . $str[$i+2]; $i += 2; } if (! isset($keys[$key])) { $keys[$key] = 0; } $keys[$key]++; } print_r($keys);
其实楼上的思路也没问题,但是代码效率不太好。我这个测试了一下,貌似有的字符识别不正常,还需要完善,只是给个思路而以。
这里有字符串截取、分割的终极解决方案。点这里,点这里
用拓展理论上是最有效的方案,php代码能实现的一般都是正则来实现,在效率上是比不上拓展的。如果觉得慢回顾下算法。
经测试,我的代码应该是没有问题的,请指正:
此段代码在php7环境下对红楼梦进行操作(148万字),总耗时0.464s。
中文字符串分隔
试试这个
其实楼上的思路也没问题,但是代码效率不太好。我这个测试了一下,貌似有的字符识别不正常,还需要完善,只是给个思路而以。
这里有字符串截取、分割的终极解决方案。
点这里,点这里
用拓展理论上是最有效的方案,php代码能实现的一般都是正则来实现,在效率上是比不上拓展的。如果觉得慢回顾下算法。