若非去空格,请慎用trim

trim — 去除字符串首尾处的空白字符(或者其他字符)
用法:
string trim ( string $str [, string $charlist = ” \t\n\r\0\x0B” ] )

trim函数大家应该不会陌生,从4.1.0 新增可选的 charlist 参数。默认的用法就不多说了,说说在使用到第二个参数的情况:

$path = trim(dirname(__FILE__), ‘/’).’/’; // 保证$path只有一个/结束

这种用法也是没有问题的。那什么情况下会出问题?再举个例子:

$domain = trim(‘www.example.com.tw’, ‘www.’); // 大家期望的结果是example.com.tw,可实际的结果却是example.com.t,tw中的w没了。

问题出现在第二个参数$charlist,它代表的是一个字符列表,而不是一个单纯的字符串,所以tw的w属于www.这个列表中的一员,被一起去掉了。具体可以再参考trim

替代方法:

$domain = preg_replace(‘/^www\.|www\.$/’, ”, ‘www.example.com.tw’);