統一中文文案、排版的相關用法,降低團隊成員之間的溝通成本,增強網站氣質。
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 保留字衝突的詞彙。
清除 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>
首行是否縮排,爭議較大,個人傾向於段首空兩格,會破壞美感的觀點。
使用全部或指定的方法來糾正排版
use Jxlwqq\ChineseTypesetting\ChineseTypesetting;
$chineseTypesetting = new ChineseTypesetting();
// 使用全部方法來糾正排版
$text = '<p class="class-name" style="color: #FFFFFF;"> Hello世界。</p>';
$chineseTypesetting->correct($text);
// output: <p>Hello 世界。</p>
// 使用指定方法來糾正排版
$text = '<p class="class-name" style="color: #FFFFFF;"> Hello世界。</p>';
$chineseTypesetting->correct($text, ['insertSpace', 'removeClass', 'removeIndent']);
// output: <p style="color: #FFFFFF;">Hello 世界。</p>
參考
本作品採用《CC 協議》,轉載必須註明作者和本文連結