2009-03-18 5 views
1

가장 어려운 문제를 없애 $에있는 텍스트 파일은 어디에서 $ lol이 루프에있을 것인가.PHP는 설명 음란 n을 사각형의

그렇다면 $ 권자 = "SOFTLAYER는"내가 메모장에서 열 때 등등의 SOFTLAYER 음악하지로 구분 같은 줄에 있습니다

softlayer music 
softlayer books 
softlayer games 
etc.. 

문제가있는 CSV입니다 얻을 것 '새로운 라인'을 의미하는 끔찍한 사각형. 그리고이 때문에 CSV는 제가 사용하려고하는 소프트웨어에 따라 무효라고 생각합니다. 절대적으로 끔찍한 문제가 설명했다

그래서 실례 :)

어떤 도움이 대규모 감사하겠습니다!

+0

두 줄 바꿈 시퀀스를 모두 지원하는 편집기를 사용하십시오. 메모장은 빤다. – Gumbo

답변

8

사전 역사의 안개 속에서 Windows Folk, Mac Folk 및 Unix 포크는 어떤 문자가 줄의 끝을 나타내야하는지에 동의 할 수 없었습니다. 클래식 Mac OS에서는 캐리지 리턴 (\ r)이었습니다. 유닉스에서는 줄 바꿈 (\ n)이었다. 창문에서는 캐리지 리턴 다음에 개행 문자 (\ r \ n)를 붙였습니다.

이전 타자기에서 두 가지을 사용하여 새로운 줄로 머리를 가져 가야했습니다. 캐리지 리턴 (큰 팔 물건)은 종이의 왼쪽 (또는 오른쪽, 샬롬!)으로 다시 타자기 헤드를 움직일 것입니다. 그러나 머리는 여전히 같은 선상에 있습니다. 용지 자체를 한 줄 위로 올리려면 두 번째 메커니즘 (줄 바꿈 또는 줄 바꿈)을 사용해야합니다.

ASCII 표준의 이유 중 하나는 (텔레그래프, 텔레타이프 등을 통해) 나중에 인쇄 될 데이터를 인코딩하여 표준에서 두 문자를 모두 갖게하는 것이 었습니다. 컴퓨터를 사용하는 것이 주된 목적이었던 파일에 대한 표준을 결정할 시간이 왔을 때 아무도 동의 할 수 없었습니다. Windows 표준 (\ r \ n)은 가장 문자 적으로 의미가 있지만 Unix 및 Classic Mac 표준 (Unix의 경우 \ n, Classic Mac의 경우 \ n)은 초당 비트로 저장됩니다.

이것은 수십 년 동안 혼란을 야기했으며 앞으로도 계속 혼란을 야기 할 것입니다. Windows 환경에서 Unix 도구를 사용할 때 특히 그렇습니다. 이 도구들은 \ n을 줄 끝으로 가정합니다. 또한 PHP 소스 파일이 유닉스 스타일의 줄 끝으로 인코딩 될 수도 있습니다. 즉, 여러 줄로 구분 된 문자열이 실제로 \ n 줄 바꿈으로 나뉘며 프로그램이 제대로 작동하고 있음을 의미합니다.

대부분의 최신 텍스트 편집기는 텍스트 파일이 어떻게 인코딩되는지 알아 내고 작성자가 "의도 한대로"줄을 표시합니다. 메모장은 그런 식으로 작동하지 않으며 문자 그대로 텍스트 파일에 복종합니다. 에 관계없이 모두의

, 다음과 같은 등록의 예는 창

$stringData = preg_replace('/[\n\r]{1,2}$/',"\r\n",$stringData); 

다른 방법에 대한 표준 무엇에 라인 엔딩을 정상화해야한다, 당신은 캐리지 리턴/줄 바꿈으로 종료하기 위해 문자열을 만들 수

$string = "line 1\r\nline 2"; 
$string = "line 1\r\n". 
      "line 2\r\n"; 
+0

그 정규 표현식을 '\ n \ n'을 '\ r \ n'(이중 개행을 하나의 단일 행으로 변경)으로 바꾸지 않을까요? preg_replace ('/ \ r \ n | \ r | \ n /', "\ r \ n", $ stringData)는 어떻게됩니까? – zildjohn01

1

대신 "\ r"을 (를) 사용해보세요.