Better Typesetting for Chinese
统一中文文案、排版的相关用法,降低团队成员之间的沟通成本,增强网站气质。, (*1)
Web 排版强迫症患者的福音。, (*2)
使用 Composer 安装:, (*4)
composer require "jxlwqq/chinese-typesetting"
use Jxlwqq\ChineseTypesetting\ChineseTypesetting; $chineseTypesetting = new ChineseTypesetting(); $text = '今天,我在Apple Store上购买了一台13英寸MacBook Pro笔记本电脑,花费了14188元。'; $chineseTypesetting->insertSpace($text); // output: 今天,我在 Apple Store 上购买了一台 13 英寸 MacBook Pro 笔记本电脑,花费了 14188 元。 $text = 'α碳原子为与有机物中与官能团相连的第一个碳原子,第二个为β碳原子,以此类推。'; $chineseTypesetting->insertSpace($text); // output: α 碳原子为与有机物中与官能团相连的第一个碳原子,第二个为 β 碳原子,以此类推。
在中文与英文字母/用于数学、科学和工程的希腊字母/数字之间添加空格。, (*5)
目前,比较主流的约定是在中文与英文之间添加空格。本包增加了对用于数学、科学和工程的希腊字母的支持。, (*6)
use Jxlwqq\ChineseTypesetting\ChineseTypesetting; $chineseTypesetting = new ChineseTypesetting(); $text = '小林买了一部 iPhone X,他终于可以用上老婆的 iPhone 7 了 ,好开心!'; $chineseTypesetting->removeSpace($text); // output: 小林买了一部 iPhone X,他终于可以用上老婆的 iPhone 7 了,好开心!
全角标点符号与其他字符之间无需添加空格。, (*7)
use Jxlwqq\ChineseTypesetting\ChineseTypesetting; $chineseTypesetting = new ChineseTypesetting(); $text = '这个名为 ABC 的蛋糕只卖 1000 元。'; $chineseTypesetting->full2Half($text); // output: 这个名为 ABC 的蛋糕只卖 1000 元。
有限度的全角转半角(英文、数字、空格以及一些特殊字符等使用半角字符)。, (*8)
use Jxlwqq\ChineseTypesetting\ChineseTypesetting; $chineseTypesetting = new ChineseTypesetting(); // 修复省略号的错误用法 $text = '她轻轻地哼起了《摇篮曲》:“月儿明,风儿静,树叶儿遮窗櫺啊…”'; $chineseTypesetting->fixPunctuation($text); // output: 她轻轻地哼起了《摇篮曲》:“月儿明,风儿静,树叶儿遮窗櫺啊……” // 中文后面使用全角中文标点 $text = '你好,世界.'; $chineseTypesetting->fixPunctuation($text); // output: 你好,世界。 // 不重复使用中文标点符号 $text = '你好激动啊!!!'; $chineseTypesetting->fixPunctuation($text); // output: 你好激动啊!
use Jxlwqq\ChineseTypesetting\ChineseTypesetting; $chineseTypesetting = new ChineseTypesetting(); $text = '今天午休的时候,我突然回想起了电影《泰坦尼克号》中 rose 裸身让 jack 作画的情节。' $chineseTypesetting->properNoun($text); // output:今天午休的时候,我突然回想起了电影《泰坦尼克号》中 Rose 裸身让 Jack 作画的情节。 // 扩展词汇 $text = '今天中午,我在 kfc 边吃着汉堡,边用 iphone 欣赏着电影《泰坦尼克号》中 rose 裸身让 JACK 作画的情节。' $chineseTypesetting->properNoun($text, ['iPhone']); // output:今天中午,我在 KFC 边吃着汉堡,边用 iPhone 欣赏着电影《泰坦尼克号》中 Rose 裸身让 Jack 作画的情节。 // 忽略词汇 $text = 'siri 告诉我,玫瑰对应的英文单词是 rose。' $chineseTypesetting->properNoun($text, [], ['Rose']); // output:Siri 告诉我,玫瑰对应的英文单词是 rose。
英语专有名词的数据来自于 Wiktionary。采集爬虫链接, (*9)
Wiktionary 声明收录了 61765 条英语专用名词,实际爬取量为 61711 条。并使用以下原则进行数据的整理和筛选:, (*10)
is_numeric()
方法,剔除诸如 007
、 等词汇;'/\W/'
正则,剔除诸如 ǃXóõ
等词汇;strlen
方法,剔除 A
等单字节字符词汇;use Jxlwqq\ChineseTypesetting\ChineseTypesetting; $chineseTypesetting = new ChineseTypesetting(); // 清除 Class 属性 $text = '你好,世界。, (*11)
'; $chineseTypesetting->removeClass($text); // output:你好,世界。, (*12)
// 清除 ID 属性 $text = '你好,世界。, (*13)
'; $chineseTypesetting->removeId($text); // output:你好,世界。, (*14)
// 清除 Style 属性 $text = '你好,世界。, (*15)
'; $chineseTypesetting->removeStyle($text); // output:你好,世界。, (*16)
use Jxlwqq\ChineseTypesetting\ChineseTypesetting; $chineseTypesetting = new ChineseTypesetting(); // 清除空的段落标签 $text = '你好,世界。, (*17)
, (*18)
'; $chineseTypesetting->removeEmptyParagraph($text); // output:你好,世界。, (*19)
use Jxlwqq\ChineseTypesetting\ChineseTypesetting; $chineseTypesetting = new ChineseTypesetting(); // 清除所有空的标签 $text = '你好,世界。, (*20)
'; $chineseTypesetting->removeEmptyTag($text); // output:你好,世界。, (*21)
use Jxlwqq\ChineseTypesetting\ChineseTypesetting; $chineseTypesetting = new ChineseTypesetting(); // 清除段首缩进 $text = '你好,世界。, (*22)
'; $chineseTypesetting->removeIndent($text); // output:你好,世界。, (*23)
首行是否缩进,争议较大,个人倾向于段首空两格,会破坏美感的观点。, (*24)
可用的方法清单: * fixPunctuation * full2Half * insertSpace * removeSpace * properNoun * removeClass * removeId * removeStyle * removeEmptyParagraph * removeEmptyTag * removeIndent, (*25)
use Jxlwqq\ChineseTypesetting\ChineseTypesetting; $chineseTypesetting = new ChineseTypesetting(); // 使用指定方法来纠正排版(推荐此用法) $text = 'Hello世界。, (*26)
'; $chineseTypesetting->correct($text, ['insertSpace', 'removeClass', 'removeIndent']); // output:Hello 世界。, (*27)
// 使用全部方法来纠正排版(不推荐此用法) $text = 'Hello世界。, (*28)
'; $chineseTypesetting->correct($text); // output:Hello 世界。, (*29)
properNoun()
方法,用于纠正专有名词的大小写;removeEmptyTag()
和 removeEmptyParagraph()
方法支持清除嵌套空标签;removeSpace()
方法,清除全角标点符号与其他字符之间的空格;chinese-typesetting
is licensed under The MIT License (MIT)., (*30)