2012-08-08 2 views
1

오늘, 나는 트림 기능에 아주 이상한 문제가 있습니다. 내 코드는 다음과 같습니다. = 및 결과는 124입니다. 자르기 기능이이 문자열에서 작동하지 않았습니다.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

+0

'$ s'에 공백 문자가 있습니까, 아니면 공백의 모음입니까? –

+0

죄송합니다.이 코드를 복사하여 붙여 넣을 수 있습니다. 이 사이트는 자동으로 일반 공백으로 바꿉니다. ( – TomSawyer

답변

8

t.txt를 볼 때 $ s 문자열은 공백이 아닙니다. 16 진수에서는 20 (공백)과 C2 및 A0 문자가 혼합되어 읽습니다. C2와 A0 문자를 잃어 버릴 필요가 있습니다.

화면에 표시되지 않지만 공백이 아닐 수 있습니다. 여기에 아마 또한 문제를 공개 할 7 비트 ASCII에서 파일을 인코딩

Screen Capture

을 반환 무슨 내 냄새입니다.

정리하려면 $ s의 모든 텍스트를 선택하고 삭제 한 다음 스페이스 바를 눌러 올바른 공백 수를 얻으십시오. 또는 같은 작업을 수행하는 str_repeat ('', 134)를 사용하십시오. 에디터의 캐릭터 세트를 확인하십시오. 어떤 두 번째 paramenter와

+0

너! 굉장한 데! UpVote! 우리가 왜 16 진수 편집자가 필요한지 생각해보십시오.) – Karma

+0

유니 코드 C2A0이 'NO-BREAK SPACE'인 것 같습니다. – Vatev

+0

많은 tks. 보이지 않는 문자를 PHP로 공백 문자로 변환하려면 어떻게해야합니까? – TomSawyer

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을 가져 오는지 확실하지 않습니다. 원래의 untrimmed $ s의 strlen은 나를 위해 82로 나온다.

+0

여기에서 제 코드를 테스트 할 수 있습니다.이 공백을 복사하여 붙여 넣을 수 없습니다. http : // 70.38.18.62/t.php 코드 : http : // 70.38. 18.62/t.txt – TomSawyer

+0

위의 내용을 잘라내어 붙여 넣기 만하면됩니다.이 두 URL에있는 내용은 다릅니다. –

+0

t.php 코드를 실행하여 124를 반환하면 124 : | – TomSawyer

0

인해 PHP DOCStrim(); 기능은

" " (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 변수에이 문자 하나를 이스케이프합니다. 다른 것은 보이지 않지만 목록에있는 것은 아닙니다.

관련 문제