PHP - 修剪不适用于空格?

时间:2012-08-08 04:33:53

标签: php trim

今天,我对修剪功能有一个非常奇怪的问题。 这是我的代码。 =结果是124。 修剪函数不适用于此字符串??!

$s = '                                                                                  ';
$s = trim($s);
echo strlen($s);exit();

复制&粘贴不适用于此代码。 我不知道白色空间是什么?但修剪不能剥离它:|

您可以在此处测试此代码:

试验: http:// 70.38.18.62/t.php

您可以在那里复制空格和代码: http://jsbin.com/ukunuq/1/edit

3 个答案:

答案 0 :(得分:8)

当我查看你的t.txt时,$ s字符串不只是空格。在十六进制中,它读取20(空格)和C2和A0字符的混合。你需要丢失那些C2和A0字符。

它们可能不会在屏幕上显示,但它们不是空格。这是我对返回内容的嗅探

Screen Capture

可能使用7位ASCII编码文件也会显示问题。

要清理它,只需选择$ s中的所有文本,删除它,然后点击空格键以获得正确的空格数。或者使用str_repeat('',134)来做同样的事情。检查编辑器的字符集。

答案 1 :(得分:0)

在这里工作:

marc@panic:~$ php -a
Interactive shell

php > $s = '                                                                                  ';
php > $s = trim($s);
php > echo strlen($s);exit();
0
marc@panic:~$ 

PHP 5.3.10-1ubuntu3.2。不知道你从哪里获得124。原来未修剪的$ s的strlen对我来说是82。

答案 2 :(得分:0)

由于PHP DOCS trim();函数没有第二个参数转义

" " (ASCII 32 (0x20)), an ordinary space.
"\t" (ASCII 9 (0x09)), a tab.
"\n" (ASCII 10 (0x0A)), a new line (line feed).
"\r" (ASCII 13 (0x0D)), a carriage return.
"\0" (ASCII 0 (0x00)), the NUL-byte.
"\x0B" (ASCII 11 (0x0B)), a vertical tab.

所以你在$s变量中只有一个这样的字符。其他人不可见,但不在列表中。

相关问题