1. 程式人生 > >PHP在UTF8編碼下去掉全形空格的曲線方法。。。。

PHP在UTF8編碼下去掉全形空格的曲線方法。。。。

找了很多。多是用正則來替換,但是都失敗了,無奈想了下一種曲線方式,非常規的方式 先看看下面的程式碼:

   

echo bin2hex(" ");//e38080

程式碼中返回的全形的空格十六進位制程式碼。

看看手冊中對bin2hex的函式說明 

返回 ASCII 字串,為引數 str 的十六進位制表示。轉換使用位元組方式,高四位位元組優先。

我們接著看下面的程式碼:


   

echo bin2hex("  這個是測試的 ");//20e38080e8bf99e4b8aae698afe6b58be8af95e79a84e38080

這段程式碼返回了一串字串,我們只需要替換掉 e38080這個,其中開頭的20 ,是半形的空格,去掉之後的字串是:


   

echo str_replace("e38080","",bin2hex("  這個是測試的 "));//注意,這裡沒有去掉半形的空格

//20e8bf99e4b8aae698afe6b58be8af95e79a84

那麼我們怎麼還原這個字串呢?bin2hex返回的是 ASCII 字串    UTF8在對中文編碼時需要佔用3個位元組

在手冊的評論中,有人寫了個函式hex2bin 


   

function hex2bin($hexdata) {
  
   for ($i=0;$i<strlen($hexdata);$i+=2) { 
$bindata.=chr(hexdec(substr($hexdata,$i,2)));
   }
return $bindata;
}

 套上程式碼試試?


   

echo hex2bin(str_replace("e38080","",bin2hex("  這個是測試的 ")));

這樣就去掉了全形的空格。