html 空白


最近又碰到了空白的問題,就記錄一下空白的種類與php移除空白的方式。

空白參考資料,這邊記錄了不少排版或特殊用途的空白。
https://zh.wikipedia.org/wiki/%E7%A9%BA%E6%A0%BC

php移除前後的空白可以用常見的 trim()進行處理,需要移除中文的也可以用 str_replace直接處理空白,麻煩的是一些少見的特殊空白。

程式來源https://stackoverflow.com/questions/22600235/remove-or-match-a-unicode-zero-width-space-php
移除特殊空白的程式,這邊可以看到範例中使用的是unicode編碼來進行取代,如果有碰到其他特殊空白也能靠增加unicode來處理。

$string = preg_replace('/[\x{200B}-\x{200D}\x{FEFF}]/u', '', $string);

空白的種類

 

最常用的空白,占用一個英文字寬度,英文是No-Break Space,和直接按空白鍵最大的差別就是連續空白不會被組合成1個

 

排版用的半形空白,一般會佔一半的字體寬度,英文是En Space

 

排版用的全形空白,一般會佔一個字體寬度,大部分情況和中文的全形空白占用寬度一樣,不過實際上是不同的文字,英文是Em Space

注意以上的字體寬度和呈現都是指在常見瀏覽器的狀況,在其他檔案格式(EX:PDF)、其他軟體、部分字體中呈現的狀況會有所差別,像這邊就有碰過在PDF中某些字型的 會佔有一個字體寬度,表現和 一樣,所以在可能的情況還是避免使用這些來進行排版。

一般來說比較不會用到的空白如下,似乎是在某些語言下才會使用

  短空白 U2009
​ 零寬度空白 U200B
‌ 零寬度空白(不連字) U200C
‍ 零寬度空白(連字) U200D
Tags : html php