在PHP裡,我們要清除變數當中的空格,先來看下面的這一種方法:
| 代碼如下 |
複製代碼 |
$arr = explode(" ",$a); foreach ($arr as $value) { $result.=$value; } echo "去除空白後:".$result; |
另外還有一種方法如下:
| 代碼如下 |
複製代碼 |
$str=str_replace(" ","",$str); $str=str_replace(chr(32),"",$str) |
上面的方法只能處理英文空格的情況.
下面的方法可以處理中文只的空格,不過有個情況是如果頁面指定了編碼的話會出現亂碼
| 代碼如下 |
複製代碼 |
$str=str_replace(chr(32),"",$str); $str=str_replace(chr(161),"",$str); |
對於頁面為UTF-8是,中文空格提交後變成了chr(227),原應為chr(161)
後面測試了使用trim(), ltrim(), rtrim()函數也可以達到我們要的效果
下面將介紹trim()系統函數的文法和使用:
string trim(string $str [, string $charlist])
trim()函數對輸入的字串進行去除開始位置和結束位置的空格(其實不只是空格)。
如果不設定第二個參數,trim()函數將會去除以下字元:
” ” : 空格;
“\t”: 定位字元;
“\n”: 分行符號;
“\r”: 斷行符號符;
“\0″: Null 字元;
“\x0B”: 垂直定位字元;
如果設定第二個參數,trim()函數將只去除第二個參數中的字元集,而不會再去除上面預設的字元集。
| 代碼如下 |
複製代碼 |
1 <?php 2 $str = " hello world "; 3 $str_trim = trim($str); 4 echo "$str<br />$str_trim"; 5 ?> 看一下輸出結果: hello world hello world
|
怎麼是一樣的呢?第一行的空格怎麼不見了。呵呵。我們在看一下網頁的HTML代碼吧:
hello world hello world
空格出現了吧!空格不見是因為瀏覽器顯示時自動進行不顯示多除的空格。
| 代碼如下 |
複製代碼 |
1 <?php 2 $str = "Left hello world Right "; 3 $str_trim = trim($str,"eftL"); 4 echo "$str<br />$str_trim"; 5 ?> 輸出結果為: Left hello world Right hello world Right
|
我們將左則和eftL字元相關的都去除了,你可能注意到了,右側的Right中的”t”也在第二個參數中,為什麼沒去除。仔細看一下$str最後一個字元,其實是空格。因為空白格(最右側)沒有去除(在HTML中能看見),所以”t”(右側倒數第二)將不會處理。這同時說明函數第二個參數會覆蓋trim()的預設字元集。
最後說一下ltrim()和rtrim()函數:
ltrim()函數只處理字串的左側;
rtrim()函數只處理字串的右側;
通過Regex替換,功能更強
php去除字串首尾空格(包括全形)
| 代碼如下 |
複製代碼 |
<? $str=" 指令碼之家 www.111cn.net "; $str = mb_ereg_replace('^( | )+', '', $str); $str = mb_ereg_replace('( | )+$', '', $str); echo mb_ereg_replace(' ', "\n ", $str); ?> |