标题：Trim
简介
PHP4,PHP5中的trim()：
功能除去字符串开头和末尾的空格或其他字符。函数执行成功时返回删除了string字符串首部和尾部空格的字符串，发生错误时返回空字符串（""）。如果任何参数的值为NULL，Trim()函数返回NULL。
语法：
string trim (string $str [,string $charlist ])
函数的返回值是一个去除开头和结尾空格的字符串。但是，如果不加第二个参数，trim()函数将去除以下这些字符：
" "(ASCⅡ 32(0x20）），一个空格
"\t"(ASCⅡ 9(0x09）），tab键
"\n"(ASCⅡ 10 (0x0A)），换行符
"\r" (ASCⅡ 13 (0x0D)),a carriage return. 
"\0" (ASCⅡ 0 (0x00)），空字符
"\x0B" (ASCⅡ 11 (0x0B)),a vertical tab. 
参数：
str 
需要去空格的字符串。
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 ASCⅡ 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⒃" Example string
"
string⑾"Hello World"
string（28） "These are a few words :) ..."
string（24） "These are a few words :)"
string⑸"o Wor"
string⒁"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⑶{
[0]=>
string⑸"apple"
[1]=>
string⑺"banana "
[2]=>
string⑾" cranberry "
}
array⑶{
[0]=>
string⑸"apple"
[1]=>
string⑹"banana"
[2]=>
string⑼"cranberry"
}
另外，rtrim，ltrim用法与trim用法相同。唯一的差别是ltrim去除左边的空格，rtrim去除右边的空格。这个从其首字母不难看出。
========================================================================
SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的资料库中有不同的名称：
MySQL: TRIM(),RTRIM(),LTRIM() 
Oracle: RTRIM(),LTRIM() 
SQL Server: RTRIM(),LTRIM()
JAVA中的trim()：
trim()是去掉首尾空格
例：
String str = " test trim";
System.out.println(str);
System.out.println(str.trim());
输出结果为：
test trim 这行的首部空格留着
test trim 这行首尾空格被去掉，但是中间的还保留
asp中的trim()：
trim()函数的作用是去掉字符中左右两端的空格
例：
Dim MyVar
MyVar = Trim(" test trim ") 
MyVar的值为"test trim"
函数语法
TRIM([[位置] [要移除的字串] FROM ] 字串）： [位置] 的可能值为 LEADING （起头），TRAILING （结尾），or BOTH （起头及结尾）。这个函数将把 [要移除的字串] 从字串的起头、结尾，或是起头及结尾移除。如果我们没有列出 [要移除的字串] 是什么的话，那空白就会被移除。
LTRIM（字串）： 将所有字串起头的空白移除。
RTRIM（字串）： 将所有字串结尾的空白移除。
例1:
SELECT TRIM(' Sample ');
结果：
'Sample'
例2:
SELECT LTRIM(' Sample ');
结果：
'Sample '
例3:
SELECT RTRIM(' Sample ');
结果：
' Sample'
2,Trim又叫Disable Delete Notify。Trim启用的验证方法：用管理员权限打开CMD，输入fsutil behavior QUERY DisableDeleteNotify
DisableDeleteNotify = 0 Trim启用
DisableDeleteNotify = 1 Trim未启用
作用
原本在机械硬盘上，写入数据时，Windows会通知硬盘先将以前的擦除，再将新的数据写入到磁盘中。而在删除数据时，Windows只会在此处做个标记，说明这里应该是没有东西了，等到真正要写入数据时再来真正删除，并且做标记这个动作会保留在磁盘缓存中，等到磁盘空闲时再执行。
这样一来，磁盘需要更多的时间来执行以上操作，速度当然会慢下来。
而当Windows识别到SSD并确认SSD支持Trim后，在删除数据时，会不向硬盘通知删除指令，只使用Volume Bitmap来记住这里的数据已经删除。Volume Bitmap只是一个磁盘快照，其建立速度比直接读写硬盘去标记删除区域要快得多。这一步就已经省下一大笔时间了。然后再是写入数据的时候，由于NAND闪存保存数据是纯粹的数字形式，因此可以直接根据Volume Bitmap的情况，向快照中已删除的区块写入新的数据，而不用花时间去擦除原本的数据。
以上就是Trim的原理以及真正作用。
验证方法
win7下Trim验证方法
其实Windows 7默认状态下Trim指令是开启的，如果想查询目前的Trim指令状态，我们可以在管理员权限下，进入命令提示符界面，输入“fsutil behavior QUERY DisableDeleteNotify”，之后会得到相关查询状态的反馈。在这里，提示为“DisableDeleteNotify = 0”即Trim指令已启用；提示为“DisableDeleteNotify = 1”即为Trim指令未启用。
并不是操作系统提供Trim指令支持，所有SSD都能享受到Trim技术所带来的好处，这还需要固态硬盘的固件支持才能实现。一些主要的固态硬盘主控芯片厂商已经提供了支持Trim的固件（例如英特尔"X25-M G2")，不过也有厂商开发出不依赖操作系统的垃圾回收技术，通过回收不再使用的闪存区块加入负载平衡算法，防止固态硬盘在长期使用后速度下滑，并延长闪存使用寿命，过程完全在固态硬盘内部完成。