统一中文文案、排版的相关用法,降低团队成员之间的沟通成本,增强网站气质。
Web 排版强迫症患者的福音。
使用 Composer 安装:
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: α 碳原子为与有机物中与官能团相连的第一个碳原子,第二个为 β 碳原子,以此类推。
在中文与英文字母/用于数学、科学和工程的希腊字母/数字之间添加空格。
目前,比较主流的约定是在中文与英文之间添加空格。本包增加了对用于数学、科学和工程的希腊字母的支持。
use Jxlwqq\ChineseTypesetting\ChineseTypesetting;
$chineseTypesetting = new ChineseTypesetting();
$text = '小林买了一部 iPhone X,他终于可以用上老婆的 iPhone 7 了 ,好开心!';
$chineseTypesetting->removeSpace($text);
// output: 小林买了一部 iPhone X,他终于可以用上老婆的 iPhone 7 了,好开心!
全角标点符号与其他字符之间无需添加空格。
use Jxlwqq\ChineseTypesetting\ChineseTypesetting;
$chineseTypesetting = new ChineseTypesetting();
$text = '这个名为 ABC 的蛋糕只卖 1000 元。';
$chineseTypesetting->full2Half($text);
// output: 这个名为 ABC 的蛋糕只卖 1000 元。
有限度的全角转半角(英文、数字、空格以及一些特殊字符等使用半角字符)。
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。采集爬虫链接
Wiktionary 声明收录了 61765 条英语专用名词,实际爬取量为 61711 条。并使用以下原则进行数据的整理和筛选:
- 使用
is_numeric()
方法,剔除诸如007
、 等词汇; - 使用
'/\W/'
正则,剔除诸如ǃXóõ
等词汇; - 剔除
strlen
方法,剔除A
等单字节字符词汇; - 剔除跟 HTML、CSS、JavaScript 保留字冲突的词汇。
use Jxlwqq\ChineseTypesetting\ChineseTypesetting;
$chineseTypesetting = new ChineseTypesetting();
// 清除 Class 属性
$text = '<p class="class-name">你好,世界。</p>';
$chineseTypesetting->removeClass($text);
// output: <p>你好,世界。</p>
// 清除 ID 属性
$text = '<p id="id-name">你好,世界。</p>';
$chineseTypesetting->removeId($text);
// output: <p>你好,世界。</p>
// 清除 Style 属性
$text = '<p style="color: #FFFFFF;">你好,世界。</p>';
$chineseTypesetting->removeStyle($text);
// output: <p>你好,世界。</p>
use Jxlwqq\ChineseTypesetting\ChineseTypesetting;
$chineseTypesetting = new ChineseTypesetting();
// 清除空的段落标签
$text = '<p>你好,世界。</p><p></p>';
$chineseTypesetting->removeEmptyParagraph($text);
// output: <p>你好,世界。</p>
use Jxlwqq\ChineseTypesetting\ChineseTypesetting;
$chineseTypesetting = new ChineseTypesetting();
// 清除所有空的标签
$text = '<p>你好,世界。<span></span></p>';
$chineseTypesetting->removeEmptyTag($text);
// output: <p>你好,世界。</p>
use Jxlwqq\ChineseTypesetting\ChineseTypesetting;
$chineseTypesetting = new ChineseTypesetting();
// 清除段首缩进
$text = '<p> 你好,世界。</p>';
$chineseTypesetting->removeIndent($text);
// output: <p>你好,世界。</p>
首行是否缩进,争议较大,个人倾向于段首空两格,会破坏美感的观点。
可用的方法清单:
- fixPunctuation
- full2Half
- insertSpace
- removeSpace
- properNoun
- removeClass
- removeId
- removeStyle
- removeEmptyParagraph
- removeEmptyTag
- removeIndent
use Jxlwqq\ChineseTypesetting\ChineseTypesetting;
$chineseTypesetting = new ChineseTypesetting();
// 使用指定方法来纠正排版(推荐此用法)
$text = '<p class="class-name" style="color: #FFFFFF;"> Hello世界。</p>';
$chineseTypesetting->correct($text, ['insertSpace', 'removeClass', 'removeIndent']);
// output: <p style="color: #FFFFFF;">Hello 世界。</p>
// 使用全部方法来纠正排版(不推荐此用法)
$text = '<p class="class-name" style="color: #FFFFFF;"> Hello世界。</p>';
$chineseTypesetting->correct($text);
// output: <p>Hello 世界。</p>
- 1.2.0:新增
properNoun()
方法,用于纠正专有名词的大小写; - 1.2.1:
removeEmptyTag()
和removeEmptyParagraph()
方法支持清除嵌套空标签; - 1.2.2:新增
removeSpace()
方法,清除全角标点符号与其他字符之间的空格;
chinese-typesetting
is licensed under The MIT License (MIT).
chinese-typesetting's People
chinese-typesetting's Issues
Fix bug
$value is overwriting a variable from outer foreach loop.
希望增加 insertSpace 的逆操作和弯角引号变变直角引号功能
一篇文章可能会投送给多个不同的分发平台。
有些平台可以在展示时自动调整内容的字符间距,无需在内容中主动添加空格,如果有空格效果反而不好。
希望能加入 insertSpace 的逆操作,去除间隔用的空格。
另外在中文文案排版指北中也有 简体中文使用直角引号 的个人化风格,希望也能提供这个变化功能。
谢谢
[Bug] properNoun 不能正确忽略部分 HTML 实体
目前发现的有以下这些,其中 •
应该挺常用的,会被处理为 &Bull;
。
•
∩
¤
↓
ð
€
≥
↔
Ï
≤
µ
≠
¬
φ
£
®
∼
∑
þ
×
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.