相關函式
語法
string trim (string $str [,string $charlist ])
參數 | 描述 |
---|
string | 必需。規定要檢查的字元串。 |
charlist | 可選。規定從字元串中刪除哪些字元。如果省略該參數,則移除下列所有字元: - "\0" - NULL
- "\t" - 制表符
- "\n" - 換行
- "\x0B" - 垂直制表符
- "\r" - 回車
- " " - 空格
|
技術細節
返回值: | 返回已修改的字元串。 |
---|
PHP 版本: | 4+ |
---|
更新日誌: | 在 PHP 4.1 中,新增了 charlist 參數。 |
---|
版本升級:
相比PHP4.1.0之下,增加了charlist參數。
實例
<?php
$text = "\t\tThese are a few words :) ... ";
$binary = "\x09Example string\x0A";
$hello = "Hello World";
var_dump($text,$binary,$hello);
print "\n";
$trimmed = trim($text);
var_dump($trimmed);
$trimmed = trim($text," \t.");
var_dump($trimmed);
$trimmed = trim($hello,"Hdle");
var_dump($trimmed);
// trim the ASCII control characters at the beginning and end of $binary
// (from 0 to 31 inclusive)
$clean = trim($binary,"\x00..\x1F");
var_dump($clean);
?>
結果如下:
string(32) " These are a few words :) ... "
string(16)" Example string
"
string(11)"Hello World"
string(28) "These are a few words :) ..."
string(24) "These are a few words :)"
string(5)"o Wor"
string(14)"Example string"
Example #2 Trimming array values with trim()
<?php
function trim_value(&$value)
{
$value = trim($value);
}
$fruit = array('apple','banana ',' cranberry ');
var_dump($fruit);
array_walk($fruit,'trim_value');
var_dump($fruit);
?>
上例結果如下:
array(3){
[0]=>
string(5)"apple"
[1]=>
string(7)"banana "
[2]=>
string(11)" cranberry "
}
array(3){
[0]=>
string(5)"apple"
[1]=>
string(6)"banana"
[2]=>
string(9)"cranberry"
}
另外,rtrim,ltrim用法與trim用法相同。唯一的差別是ltrim去除左邊的空格,rtrim去除右邊的空格。這個從其首字母不難看出。
SQL TRIM函式
定義和用法
SQL中的TRIM函式是用來移除掉一個字串中的字頭或字尾。最常見的用途是移除字首或字尾的空白。這個函式在不同的資料庫中有不同的名稱:
MySQL: TRIM(),RTRIM(),LTRIM()
Oracle: RTRIM(),LTRIM()
SQL Server: RTRIM(),LTRIM()
各種 trim 函式的語法如下:
LTRIM(字串):將字串左邊的空格移除。
RTRIM(字串): 將字串右邊的空格移除。
TRIM(字串): 將字串首尾兩端的空格移除,作用等於RTRIM和LTRIM兩個函式共同的結果。
ALLTRIM(字串):將字串左右邊兩邊的空格移除。
實例
例1:
SELECT TRIM(' Sample ');
結果:
'Sample'
例2:
SELECT LTRIM(' Sample ');
結果:
'Sample '
例3:
SELECT RTRIM(' Sample ');
結果:
' Sample'
JAVA trim()方法
例:
String str = " test trim";
System.out.println(str);
System.out.println(str.trim());
輸出結果為:
test trim 這行的首部空格留著
test trim 這行首尾空格被去掉,但是中間的還保留
ASP trim()函式
ASP中的trim()函式的作用是去掉字元中左右兩端的空格
例:
Dim MyVar
MyVar = Trim(" test trim ")
MyVar的值為"test trim"
ASP.NET trim()函式
.net 中Trim()函式的作用是從當前 System.String 對象的開始和末尾移除所有空白字元後保留的字元串。
另外還有
TrimStart(params char[] trimChars) //從當前 System.String 對象移除數組中指定的一組字元的所有前導匹配項。
TrimEnd(params char[] trimChars) //從當前 System.String 對象移除數組中指定的一組字元的所有尾部匹配項。
例如:
stringStr="HelloWord!";stringnewStr1="";stringnewStr2="";stringnewStr3="";newStr1=Str.Trim();//即可去掉該字元串頭尾的所有空白字元newStr2=Str.TrimStart('');//參數不能為空,只能是char類型,去掉字元前面的空白字元newStr3=Str.TrimEnd('');//參數不能為空,只能是char類型,去掉字元後面的空白字元Response.Write("newStr1等於\""+newStr1+"\"<br/>");Response.Write("newStr2等於\""+newStr2+"\"<br/>");Response.Write("newStr3等於\""+newStr3+"\"<br/>");
結果:
newStr1等於"Hello Word !"
newStr2等於"Hello Word ! "
newStr3等於" Hello Word !"
SSDTRIM
原理
原本在
機械硬碟上,在刪除數據時,系統只會在邏輯地址表的這個位置做個標記,說明這裡應該是沒有東西了,以後新的數據可以放在這個邏輯位置上。系統並不會傳送任何請求給硬碟,因為下次在這個邏輯位置寫入新數據時,系統可以直接找到磁碟上對應的物理位置,將硬碟上該處的無用數據覆蓋,因此才有數據恢復的可能。所以對於硬碟的物理內容,在刪除檔案時其實並沒有發生任何變化。
對於固態硬碟(SSD),由於快閃記憶體的固有特性,更新頁之前必須要擦除相關塊。如果不開啟TRIM,在檔案系統中早已被刪除的塊在物理上還存放著原來的數據,且SSD主控無法知道這個塊已經無用,直到有新的數據要求寫入該塊。物理上存放已無用的數據會在SSD垃圾回收(GC)的過程中被當成有用數據對待,被這對於固態硬碟的壽命是非常不利的,同時會導致其工作效率和性能的降低。
而當作業系統識別到SSD並確認SSD支持TRIM後,在刪除數據時,向SSD發出TRIM指令,通知SSD主控對應的頁面已經無效,SSD啟動GC(垃圾回收)機制時,就可以及時釋放這些頁面。未來有數據需要寫入的時候,直接就可以寫入了。
所以說,TRIM只是避免SSD在垃圾回收時將無用數據當成有用數據來搬運,從而延長了SSD的壽命。以上就是Trim的原理以及真正作用。
並不是作業系統提供Trim指令支持,所有SSD都能享受到Trim技術所帶來的好處,這還需要
固態硬碟的固件支持才能實現。一些主要的固態硬碟主控晶片廠商已經提供了支持Trim的固件(例如英特爾"X25-M G2"),不過也有廠商開發出不依賴作業系統的垃圾回收技術,通過回收不再使用的快閃記憶體區塊加入負載平衡算法,防止固態硬碟在長期使用後速度下滑,並延長快閃記憶體使用壽命,過程完全在固態硬碟內部完成。
驗證方法
win7下Trim驗證方法
其實Windows 7默認狀態下Trim指令是開啟的,如果想查詢當前的Trim指令狀態,我們可以在管理員許可權下,進入
命令提示符界面,輸入“fsutil behavior QUERY DisableDeleteNotify”,之後會得到相關查詢狀態的反饋。在這裡,提示為“DisableDeleteNotify = 0”即Trim指令已啟用;提示為“DisableDeleteNotify = 1”即為Trim指令未啟用。