2012-08-08 103 views
1

今天,我有修剪功能非常奇怪的問題。 這是我的代碼。 =並且結果爲124. Trim函數對此字符串不起作用??!PHP - 修剪不適用於空白?

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

複製&粘貼不能使用此代碼。 我不知道什麼是空白?但修剪無法剝離:|

您可以測試這個代碼在這裏:

測試: HTTP:// 70.38.18.62/t.php

您可以在那裏複製的空白和代碼: http://jsbin.com/ukunuq/1/edit

+1

輸出0,如我所料。我懷疑你的問題在別處。 – rdlowrey 2012-08-08 04:37:02

+0

你在'$ s'中有空白字符嗎?還是空間集合? – 2012-08-08 04:37:17

+0

抱歉,您可以複製並粘貼此代碼。這個網站自動替換爲普通的空白區域:( – TomSawyer 2012-08-08 04:38:07

回答

8

當我看着你的t.txt時,$ s字符串不僅僅是空格。在Hex中,它讀取20(空格)和C2和A0字符的混合。你需要丟失這些C2和A0字符。

它們可能不顯示在屏幕上,但它們不是空格。這裏是我的什麼返回

Screen Capture

可能的編碼文件中的7位ASCII也將揭示問題嗤之以鼻。

要清理它,只需選擇$ s中的所有文本,將其刪除,然後點擊空格鍵以獲取正確數量的空格。或者使用str_repeat('',134)來執行相同的操作。檢查編輯器的字符集。

+0

你先生!是真棒!給予好評!給出一個想法...爲什麼我們需要十六進制編輯器;) – Karma 2012-08-08 04:58:40

+0

看起來unicode C2A0是一個'沒有破壞空間'。 – Vatev 2012-08-08 04:59:40

+0

很多tks。如何將所有未看到的字符轉換爲帶有PHP的空白字符? – TomSawyer 2012-08-08 05:02:38

0

廠這裏:

[email protected]:~$ php -a 
Interactive shell 

php > $s = '                     '; 
php > $s = trim($s); 
php > echo strlen($s);exit(); 
0 
[email protected]:~$ 

PHP 5.3.10-1ubuntu3.2。不知道你從哪裏得到124。原始未修改的$ s的大小對我來說是82。

+0

你可以在這裏測試我的代碼,不能複製和粘貼這些空白區域 http:// 70.38.18.62/t.php 代碼: http:// 70.38。 18.62/t.txt – TomSawyer 2012-08-08 04:43:50

+0

我剪切並粘貼到上面的東西,你在這兩個網址中有什麼不同 – 2012-08-08 04:44:39

+0

你不能複製和粘貼運行t.php代碼返回124:| – TomSawyer 2012-08-08 04:46:28

0

由於PHP DOCStrim();沒有第二paramenter函數轉義

" " (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變量這個人物之一。其他人不可見,但不在列表中。