{"id":15639647,"url":"https://github.com/jxlwqq/chinese-typesetting","last_synced_at":"2025-04-13T23:47:45.055Z","repository":{"id":57003514,"uuid":"142371176","full_name":"jxlwqq/chinese-typesetting","owner":"jxlwqq","description":"📄 中文排版 Composer 包","archived":false,"fork":false,"pushed_at":"2018-10-29T15:09:22.000Z","size":197,"stargazers_count":85,"open_issues_count":2,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-23T01:02:24.477Z","etag":null,"topics":["chinese-copywriting","chinese-typesetting","composer","composer-package","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jxlwqq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-07-26T01:17:05.000Z","updated_at":"2024-06-14T08:19:25.000Z","dependencies_parsed_at":"2022-08-21T14:30:16.948Z","dependency_job_id":null,"html_url":"https://github.com/jxlwqq/chinese-typesetting","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jxlwqq%2Fchinese-typesetting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jxlwqq%2Fchinese-typesetting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jxlwqq%2Fchinese-typesetting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jxlwqq%2Fchinese-typesetting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jxlwqq","download_url":"https://codeload.github.com/jxlwqq/chinese-typesetting/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248573490,"owners_count":21126840,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chinese-copywriting","chinese-typesetting","composer","composer-package","php"],"created_at":"2024-10-03T11:26:47.621Z","updated_at":"2025-04-13T23:47:45.019Z","avatar_url":"https://github.com/jxlwqq.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 更好的中文文案排版\n \n统一中文文案、排版的相关用法，降低团队成员之间的沟通成本，增强网站气质。\n\nWeb 排版强迫症患者的福音。\n\n[![Build Status](https://travis-ci.org/jxlwqq/chinese-typesetting.svg?branch=master)](https://travis-ci.org/jxlwqq/chinese-typesetting)\n[![StyleCI](https://github.styleci.io/repos/142371176/shield?branch=master)](https://github.styleci.io/repos/142371176)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/jxlwqq/chinese-typesetting/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/jxlwqq/chinese-typesetting/?branch=master)\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fjxlwqq%2Fchinese-typesetting.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fjxlwqq%2Fchinese-typesetting?ref=badge_shield)\n\n## 安装\n使用 [Composer](https://getcomposer.org/) 安装：\n```bash\ncomposer require \"jxlwqq/chinese-typesetting\"\n```\n\n## 使用\n\n### 添加空格\n\n```php\nuse Jxlwqq\\ChineseTypesetting\\ChineseTypesetting;\n\n$chineseTypesetting = new ChineseTypesetting();\n\n$text = '今天，我在Apple Store上购买了一台13英寸MacBook Pro笔记本电脑，花费了14188元。';\n$chineseTypesetting-\u003einsertSpace($text);\n// output: 今天，我在 Apple Store 上购买了一台 13 英寸 MacBook Pro 笔记本电脑，花费了 14188 元。\n\n$text = 'α碳原子为与有机物中与官能团相连的第一个碳原子，第二个为β碳原子，以此类推。';\n$chineseTypesetting-\u003einsertSpace($text);\n// output: α 碳原子为与有机物中与官能团相连的第一个碳原子，第二个为 β 碳原子，以此类推。\n```\n\n在中文与英文字母/用于数学、科学和工程的希腊字母/数字之间添加空格。\n\n目前，比较主流的约定是在中文与英文之间添加空格。本包增加了对用于数学、科学和工程的希腊字母的支持。\n\n### 清除空格\n```php\nuse Jxlwqq\\ChineseTypesetting\\ChineseTypesetting;\n\n$chineseTypesetting = new ChineseTypesetting();\n\n$text = '小林买了一部 iPhone X，他终于可以用上老婆的 iPhone 7 了 ，好开心！';\n$chineseTypesetting-\u003eremoveSpace($text);\n// output: 小林买了一部 iPhone X，他终于可以用上老婆的 iPhone 7 了，好开心！\n```\n全角标点符号与其他字符之间无需添加空格。\n\n\n### 全角转半角\n```php\nuse Jxlwqq\\ChineseTypesetting\\ChineseTypesetting;\n\n$chineseTypesetting = new ChineseTypesetting();\n\n$text = '这个名为 ＡＢＣ 的蛋糕只卖 １０００ 元。';\n$chineseTypesetting-\u003efull2Half($text);\n// output: 这个名为 ABC 的蛋糕只卖 1000 元。\n```\n有限度的全角转半角（英文、数字、空格以及一些特殊字符等使用半角字符）。\n\n\n### 修复错误的标点符号\n```php\nuse Jxlwqq\\ChineseTypesetting\\ChineseTypesetting;\n\n$chineseTypesetting = new ChineseTypesetting();\n\n// 修复省略号的错误用法\n$text = '她轻轻地哼起了《摇篮曲》：“月儿明，风儿静，树叶儿遮窗櫺啊…”';\n$chineseTypesetting-\u003efixPunctuation($text);\n// output: 她轻轻地哼起了《摇篮曲》：“月儿明，风儿静，树叶儿遮窗櫺啊……”\n\n// 中文后面使用全角中文标点\n$text = '你好,世界.';\n$chineseTypesetting-\u003efixPunctuation($text);\n// output: 你好，世界。\n\n// 不重复使用中文标点符号\n$text = '你好激动啊！！！';\n$chineseTypesetting-\u003efixPunctuation($text);\n// output: 你好激动啊！\n```\n\n### 专有名词使用正确的大小写\n\n```php\nuse Jxlwqq\\ChineseTypesetting\\ChineseTypesetting;\n\n$chineseTypesetting = new ChineseTypesetting();\n\n$text = '今天午休的时候，我突然回想起了电影《泰坦尼克号》中 rose 裸身让 jack 作画的情节。'\n$chineseTypesetting-\u003eproperNoun($text);\n// output：今天午休的时候，我突然回想起了电影《泰坦尼克号》中 Rose 裸身让 Jack 作画的情节。\n\n// 扩展词汇\n$text = '今天中午，我在 kfc 边吃着汉堡，边用 iphone 欣赏着电影《泰坦尼克号》中 rose 裸身让 JACK 作画的情节。'\n$chineseTypesetting-\u003eproperNoun($text, ['iPhone']);\n// output：今天中午，我在 KFC 边吃着汉堡，边用 iPhone 欣赏着电影《泰坦尼克号》中 Rose 裸身让 Jack 作画的情节。\n\n// 忽略词汇\n$text = 'siri 告诉我，玫瑰对应的英文单词是 rose。'\n$chineseTypesetting-\u003eproperNoun($text, [], ['Rose']);\n// output：Siri 告诉我，玫瑰对应的英文单词是 rose。\n```\n\n英语专有名词的数据来自于 [Wiktionary](https://en.wiktionary.org/w/index.php?title=Category:English_proper_nouns)。[采集爬虫链接](https://github.com/jxlwqq/english-proper-nouns)\n\nWiktionary 声明收录了 61765 条英语专用名词，实际爬取量为 61711 条。并使用以下原则进行数据的整理和筛选：\n\n* 使用 `is_numeric()` 方法，剔除诸如 `007`、 等词汇；\n* 使用 `'/\\W/'` 正则，剔除诸如 `ǃXóõ` 等词汇；\n* 剔除 `strlen` 方法，剔除 `A` 等单字节字符词汇；\n* 剔除跟 HTML、CSS、JavaScript 保留字冲突的词汇。\n\n\n### 清除 HTML 标签的样式\n```php\nuse Jxlwqq\\ChineseTypesetting\\ChineseTypesetting;\n\n$chineseTypesetting = new ChineseTypesetting();\n\n// 清除 Class 属性\n$text = '\u003cp class=\"class-name\"\u003e你好，世界。\u003c/p\u003e';\n$chineseTypesetting-\u003eremoveClass($text);\n// output: \u003cp\u003e你好，世界。\u003c/p\u003e\n\n// 清除 ID 属性\n$text = '\u003cp id=\"id-name\"\u003e你好，世界。\u003c/p\u003e';\n$chineseTypesetting-\u003eremoveId($text);\n// output: \u003cp\u003e你好，世界。\u003c/p\u003e\n\n// 清除 Style 属性\n$text = '\u003cp style=\"color: #FFFFFF;\"\u003e你好，世界。\u003c/p\u003e';\n$chineseTypesetting-\u003eremoveStyle($text);\n// output: \u003cp\u003e你好，世界。\u003c/p\u003e\n```\n\n### 清除空的段落标签\n```php\nuse Jxlwqq\\ChineseTypesetting\\ChineseTypesetting;\n\n$chineseTypesetting = new ChineseTypesetting();\n\n// 清除空的段落标签\n$text = '\u003cp\u003e你好，世界。\u003c/p\u003e\u003cp\u003e\u003c/p\u003e';\n$chineseTypesetting-\u003eremoveEmptyParagraph($text);\n// output: \u003cp\u003e你好，世界。\u003c/p\u003e\n```\n\n### 清除所有空的标签\n```php\nuse Jxlwqq\\ChineseTypesetting\\ChineseTypesetting;\n\n$chineseTypesetting = new ChineseTypesetting();\n\n// 清除所有空的标签\n$text = '\u003cp\u003e你好，世界。\u003cspan\u003e\u003c/span\u003e\u003c/p\u003e';\n$chineseTypesetting-\u003eremoveEmptyTag($text);\n// output: \u003cp\u003e你好，世界。\u003c/p\u003e\n```\n\n### 清除段首缩进\n```php\nuse Jxlwqq\\ChineseTypesetting\\ChineseTypesetting;\n\n$chineseTypesetting = new ChineseTypesetting();\n\n// 清除段首缩进\n$text = '\u003cp\u003e  你好，世界。\u003c/p\u003e';\n$chineseTypesetting-\u003eremoveIndent($text);\n// output: \u003cp\u003e你好，世界。\u003c/p\u003e\n```\n\n首行是否缩进，[争议较大](https://zh.wikipedia.org/wiki/Wikipedia:投票/段落空兩格)，个人倾向于段首空两格，会破坏美感的观点。\n\n### 使用指定的多种方法来纠正排版\n\n可用的方法清单：\n* fixPunctuation\n* full2Half\n* insertSpace\n* removeSpace\n* properNoun\n* removeClass\n* removeId\n* removeStyle\n* removeEmptyParagraph\n* removeEmptyTag\n* removeIndent\n\n```php\nuse Jxlwqq\\ChineseTypesetting\\ChineseTypesetting;\n\n$chineseTypesetting = new ChineseTypesetting();\n\n// 使用指定方法来纠正排版（推荐此用法）\n$text = '\u003cp class=\"class-name\" style=\"color: #FFFFFF;\"\u003e Hello世界。\u003c/p\u003e';\n$chineseTypesetting-\u003ecorrect($text, ['insertSpace', 'removeClass', 'removeIndent']);\n// output: \u003cp style=\"color: #FFFFFF;\"\u003eHello 世界。\u003c/p\u003e\n\n// 使用全部方法来纠正排版（不推荐此用法）\n$text = '\u003cp class=\"class-name\" style=\"color: #FFFFFF;\"\u003e Hello世界。\u003c/p\u003e';\n$chineseTypesetting-\u003ecorrect($text);\n// output: \u003cp\u003eHello 世界。\u003c/p\u003e\n```\n\n## 参考\n\n* [中文文案排版指北](https://github.com/sparanoid/chinese-copywriting-guidelines)\n* [中文技术文档的写作规范](https://github.com/ruanyf/document-style-guide)\n* [用于数学、科学和工程的希腊字母](https://zh.wikipedia.org/wiki/用於數學、科學和工程的希臘字母)\n* [English proper nouns](https://en.wiktionary.org/w/index.php?title=Category:English_proper_nouns)\n\n\n## Change Log\n\n* 1.2.0：新增 `properNoun()` 方法，用于纠正专有名词的大小写；\n* 1.2.1：`removeEmptyTag()` 和 `removeEmptyParagraph()` 方法支持清除嵌套空标签；\n* 1.2.2：新增 `removeSpace()` 方法，清除全角标点符号与其他字符之间的空格；\n\n## License\n`chinese-typesetting` is licensed under [The MIT License (MIT)](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjxlwqq%2Fchinese-typesetting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjxlwqq%2Fchinese-typesetting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjxlwqq%2Fchinese-typesetting/lists"}