php中文分词源码遇到的小问题

WBOY
Freigeben: 2016-06-23 14:00:22
Original
979 Leute haben es durchsucht

define('_SP_', chr(0xFF).chr(0xFE)); define('UCS2', 'ucs-2be');
Nach dem Login kopieren

这2个常量定义的作用是什么?_SP_定义成chr(0xFF).chr(0xFE)是什么意思,我在ascii对照表内根本找不到FF,FE这2个对应的编码啊?
后面的代码如下
        //载入副词典        $hw = '';        $ds = file($dicAddon);//17行的txt格式字典文件        foreach($ds as $d)        {            $d = trim($d);            if($d=='') continue;            $estr = substr($d, 1, 1);            if( $estr==':' ) {                $hw = substr($d, 0, 1);            }            else            {                $spstr = _SP_;                $spstr = iconv(UCS2, 'utf-8', $spstr);//怎么会出现ucs2编码?咋回事                $ws = explode(',', $d);//每一行的汉字,用中间的逗号分成数组                $wall = iconv('utf-8', UCS2, join($spstr, $ws));//用_SP_又组合成了字符串??,然后又转换成了ucs2?                $ws = explode(_SP_, $wall);//又接着分割成数组?啥意思啊!!!                foreach($ws as $estr)                {                    $this->addonDic[$hw][$estr] = strlen($estr);                }            }        }
Nach dem Login kopieren


这段代码,就是载入字典文件,可是我没明白ELSE代码的逻辑?谁能简单说说


回复讨论(解决方案)

你的字典文件是 ucs-2be 编码的

chr(0xFF).chr(0xFE) 是 ucs-2be 的 BOM

你的字典文件是 ucs-2be 编码的

chr(0xFF).chr(0xFE) 是 ucs-2be 的 BOM

还是有些不懂,建立_SP_这个常量有什么作用啊?ucs-2be的BOM直接写出来存入一个变量就行了,为什么还要拿chr()函数计算出来?

chr(0xFF).chr(0xFE) 可写作 “\xff\xfe"
不过作者没有你那么聪明,所以就用字符串函数写了

chr(0xFF).chr(0xFE) 可写作 “\xff\xfe"
不过作者没有你那么聪明,所以就用字符串函数写了
作者是dede的作者,怎么可能?kending bushi zheyangde

不是他,就是你
不知道变通!

不是他,就是你
不知道变通!
版主,我真没弄懂,人家用_SP_当字符串分割标识的,不是BOM吧,能帮帮忙嘛!

BOM 是编码类型声明,把 _SP_ 解释为 BOM 是为了帮助理解
你不是”在ascii对照表内根本找不到FF,FE这2个对应的编码“
再看

define('_SP_', chr(0xFF).chr(0xFE)); define('UCS2', 'ucs-2be');$spstr = _SP_;$spstr = iconv(UCS2, 'utf-8', $spstr);echo bin2hex($spstr);
Nach dem Login kopieren
Nach dem Login kopieren
得到 efbfbe
这是 utf-8 的 BOM

至于他为什么要这样做,你看看字典文件就知道是怎么回事了

BOM 是编码类型声明,把 _SP_ 解释为 BOM 是为了帮助理解
你不是”在ascii对照表内根本找不到FF,FE这2个对应的编码“
再看

define('_SP_', chr(0xFF).chr(0xFE)); define('UCS2', 'ucs-2be');$spstr = _SP_;$spstr = iconv(UCS2, 'utf-8', $spstr);echo bin2hex($spstr);
Nach dem Login kopieren
Nach dem Login kopieren
得到 efbfbe
这是 utf-8 的 BOM

至于他为什么要这样做,你看看字典文件就知道是怎么回事了
你说的好像不对,但是也没人知道

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!