PHP之無法去掉的字串中間空格 不間斷空格

2021-09-27 06:53:33 字數 872 閱讀 7680

需求:去掉答案中的多餘空格,只保留乙個半角空格。

$answer = preg_replace("/\s(?=\s)/","\\1",$answer);

$answer = trim($answer);

自測都是沒問題的。但是和端聯調的時候出現了乙個奇怪的問題。看起來都是空格,但是卻怎麼也去不掉。

想來想去,打一下字元的anscii碼吧。於是出現了以下情況。發現160和32都是空格,但是anscii碼卻不同。

在php中trim可以去除字串兩邊的空格和製表符等。但是trim卻去不掉這個字元。

原來:ascii碼中有兩種特殊空格,雖然顯示一樣,但對應的的ascii 碼值不一樣(乙個碼值32,乙個碼值160)

ascii值是32:是用鍵盤輸入的空格,

ascii值是160:不間斷空格(non-breaking space,縮寫nbsp),即   所產生的空格,作用是在頁面換行時不被打斷。

比如:輸入hello world。但是world在此處必須要換行,但是又不希望提交上來是中間帶有換行的字串,所以有了不間斷空格。

不間斷空格有個特點:無法被trim()所裁剪,也無法被正規表示式的\s所匹配。

所以,我用的兩種匹配都gg。

方法:

單獨去除不間斷空格,注意不能單獨去除,否則可能會去除無關字元

str_replace(chr(194).chr(160), '', $str);

PHP擷取指定字串中間的字元

php如何擷取指定字串中間的字元,比如如何擷取如下字串中 sell 55 的 55這個數字。q 秘qwqqq111密 sell 55 0qwqw sell 位置 sell 55 0qwqw sell 上面的付費檢視 第一種,可以使用正則,即如何獲取正則匹配到的結果,我們可以用preg match a...

php去掉字串中的(部分)空格

乙個根據時間段查詢資料的介面,勾選了時間範圍,然而每次都查不到資料。然後,f12看傳送的url請求,發現url中帶有一些 20,如 time 202020 07 24 2000 00 00,202020 07 25 2000 00 00 而列印出來的time是比較正常的 2020 07 2400 0...

去掉字串首尾逗號 PHP去除字串開頭或末尾逗號

去除最後乙個逗號 str a,b,c,d,echo rtrim str,返回的結果就是 a,b,c,d 去除開頭逗號 str a,b,c,d echo ltrim str,返回的結果就是 a,b,c,d 用到的函式 trim 函式從字串的兩端刪除空白字元和其他預定義字元。trim string,ch...