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