All Projects → jxlwqq → Chinese Typesetting

jxlwqq / Chinese Typesetting

Licence: mit
📄 中文排版 Composer 包

Labels

Projects that are alternatives of or similar to Chinese Typesetting

Airflow Toolkit
Any Airflow project day 1, you can spin up a local desktop Kubernetes Airflow environment AND one in Google Cloud Composer with tested data pipelines(DAGs) 🖥 >> [ 🚀, 🚢 ]
Stars: ✭ 51 (-35.44%)
Mutual labels:  composer
Packagist Mirror
Alibaba Cloud Packagist Mirror
Stars: ✭ 63 (-20.25%)
Mutual labels:  composer
Designpattern
设计模式
Stars: ✭ 66 (-16.46%)
Mutual labels:  composer
Spinupwp Composer Site
A WordPress site setup using Composer that is primed and ready to be hosted using SpinupWP.
Stars: ✭ 58 (-26.58%)
Mutual labels:  composer
Laravel Restify
The fastest way to make a powerful JSON:API compatible Rest API with Laravel.
Stars: ✭ 62 (-21.52%)
Mutual labels:  composer
Scriptsdev
Scripts-dev directive for composer
Stars: ✭ 63 (-20.25%)
Mutual labels:  composer
Larrock Core
Core components for LarrockCMS
Stars: ✭ 46 (-41.77%)
Mutual labels:  composer
Composer Tools
⚠️ ⚠️ ⚠️ Hyperledger Composer has been deprecated ⚠️ ⚠️ ⚠️
Stars: ✭ 75 (-5.06%)
Mutual labels:  composer
Pkgmirror
Packages Mirroring
Stars: ✭ 62 (-21.52%)
Mutual labels:  composer
Pusher Http Php
PHP library for interacting with the Pusher Channels HTTP API
Stars: ✭ 1,136 (+1337.97%)
Mutual labels:  composer
Codice Fiscale
A PHP library to calculate and check the italian tax code (codice fiscale).
Stars: ✭ 57 (-27.85%)
Mutual labels:  composer
Mailchimp Api 3.0 Php
A feature rich object-oriented PHP library for interacting with MailChimp's API v3 💌🐵
Stars: ✭ 61 (-22.78%)
Mutual labels:  composer
Formula Parser
Parsing and evaluating mathematical formulas given as strings.
Stars: ✭ 62 (-21.52%)
Mutual labels:  composer
Php frameworks analysis
php框架源码分析
Stars: ✭ 57 (-27.85%)
Mutual labels:  composer
Easy Short Url
ESU 短网址,可在 Laravel、Yii、ThinkPHP 等框架 Composer 包引入,也可以独立搭建短网址站点
Stars: ✭ 71 (-10.13%)
Mutual labels:  composer
Font Awesome Php
A PHP library for Font Awesome 4.7.
Stars: ✭ 47 (-40.51%)
Mutual labels:  composer
Deb Dev Machine
Quickly install common Developer tools, IDE's & Services on Debian 9
Stars: ✭ 63 (-20.25%)
Mutual labels:  composer
Array group by
A PHP function that groups an array by a key or set of keys shared between all array members.
Stars: ✭ 77 (-2.53%)
Mutual labels:  composer
Html Compress Twig
Twig extension for compressing HTML and inline CSS/JS using WyriHaximus/HtmlCompress
Stars: ✭ 72 (-8.86%)
Mutual labels:  composer
Conductor
Conductor makes it easy to mange multiple composer packages within a single source repository
Stars: ✭ 64 (-18.99%)
Mutual labels:  composer

更好的中文文案排版

统一中文文案、排版的相关用法,降低团队成员之间的沟通成本,增强网站气质。

Web 排版强迫症患者的福音。

Build Status StyleCI Scrutinizer Code Quality FOSSA Status

安装

使用 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 保留字冲突的词汇。

清除 HTML 标签的样式

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>

参考

Change Log

  • 1.2.0:新增 properNoun() 方法,用于纠正专有名词的大小写;
  • 1.2.1:removeEmptyTag()removeEmptyParagraph() 方法支持清除嵌套空标签;
  • 1.2.2:新增 removeSpace() 方法,清除全角标点符号与其他字符之间的空格;

License

chinese-typesetting is licensed under The MIT License (MIT).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].