84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
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代码能实现的一般都是正则来实现,在效率上是比不上拓展的。如果觉得慢回顾下算法。