2011-01-28 6 views
25

많은 개발자가 문자열을 새 줄로 나눌 수있는 여러 가지 방법을 사용했지만 올바른지 헷갈 렸습니다. \r\n 또는 \n?새 줄이 n OR r n입니까?

+3

'\ n \ r'을 본 적이 없습니다. 두 개를 사용하는 경우 일반적으로 '\ r \ n'입니다. – icktoofay

+0

이것은 실제로 처리중인 파일/문자열의 형식에 따라 다릅니다. – MrGlass

+2

문자열에 네이티브 시스템 eol 문자를 포함하려는 경우 PHP_EOL 상수가 있습니다. 다른 시스템에서 온 텍스트를 다루는 경우에는별로 도움이되지 않습니다. –

답변

55

\n은 Linux 시스템 (Linux 및 OSX 포함)에 사용됩니다.

\r\n은 주로 Windows에서 사용됩니다.

\r은 정말 오래된 Mac에서 사용됩니다.

+0

\ r 때로는 텍스트 편집기에 따라 현재 Mac에서도 사용됩니다. 하지만 대부분의 일반 텍스트 편집기는 유닉스 스타일로 전환했다. – ughoavgfhw

+0

아주 좋아요. 알지 못하는 사람들을 위해 좀 더 구체적으로 말하자면, "\ n"을 사용하는 "대부분의 유닉스 시스템"은 맥 오에스 텐을 포함한다. – Wiseguy

+3

아주 오래된 맥은 OS 9 용으로 코딩 된 프로그램을 의미한다. 2002. – Yuji

3

당신이 PHP로 프로그래밍하는 경우, \n으로 라인을 분할하는 데 유용하고 trim()이 (당신이 공백을 걱정하지 않는 한) 각 라인에 관계없이 당신에게 "깨끗한"라인을 제공 할 수 있습니다.

foreach($line in explode("\n", $data)) 
{ 
    $line = trim($line); 
    ... 
} 
22

주어진 답변은 아직 완료되지 않았습니다. 실제로 이것은 독자가이 대답이 그렇지 않을 때 OS에 의존한다고 믿게 만드는 경향이 있다는 점에서 완전하지 못합니다. 또한 프로그래밍 언어에 종속적 인 것도 아닙니다 (일부 주석가가 제안한 것처럼). 더 명확하게하기 위해 더 많은 정보를 추가하겠습니다. 첫째, 현재 새로운 라인 변화의 목록을 제공 할 수 있습니다 (에서와 같이, 그들은 1999 년부터 있었던 것을) :

  • \r\n은 Windows 메모장, DOS 명령 줄에 사용되는 윈도우 API의 대부분 일부 (오래된) Windows 응용 프로그램에서.
  • \n은 다른 모든 시스템, 응용 프로그램 및 인터넷에 사용됩니다.
당신은 내가 \n 그룹에있는 대부분의 Windows 애플리케이션 약간의 논란이있을 수 있지만이 문장에 동의하기 전에 UNIX 형식의 텍스트 파일을 잡고 10 웹 친화적 인 Windows에서 그것을 시도하십시오 수 있습니다 넣어 한 것을 알 수 있습니다

귀하가 선택한 신청서 (위의 예외 제외). 그들 중 몇 퍼센트가 잘 처리 했습니까? Windows가 \r\n을 사용할 수 있지만 \n을 사용하기 때문에 (거의) 모두 자동 줄 바꿈 검색을 구현하거나 \n 만 사용한다는 것을 알 수 있습니다. 따라서 출력물을 인터넷에 연결하려면 응용 프로그램에서 \n 만 사용하는 것이 가장 좋습니다.

PHP는 PHP_EOL이라는 개행 문자도 정의합니다. 이 상수는 PHP가 실행중인 컴퓨터의 OS 특정 줄 바꿈 문자열로 설정됩니다 (Windows의 경우 \r\n, 그 외 모든 경우는 \n). 이 상수는 웹 페이지에는별로 유용하지 않으므로 HTML 출력이나 대부분의 텍스트를 파일에 쓰지 않아야합니다. 지원되는 모든 OS에서 일관되게 응용 프로그램을 터미널 창으로 출력 할 수 있으므로 PHP 응용 프로그램의 명령 행 출력으로 이동할 때 매우 유용합니다.

당신이 원하는 경우에 그들이에 배치 된 모든 서버에서 작동하도록 PHP 애플리케이션, 기억해야 할 가장 큰 두 가지가 터미널 출력 (이 경우 당신이 PHP_EOL 사용)하지 않는 한 당신은 언제나 \n를 사용해야 있습니다 경로 구분자에 항상 /을 사용해야합니다 (\ 아님).

짝수 더 이상 설명 :

응용 프로그램에 관계없이 스타일을 종료 기본 OS 라인의 좋아하는 엔딩 어떤 줄을 사용하도록 선택할 수 있습니다. 어쨌든 텍스트를 해석 할 때마다 줄 바꾸기를 나타 내기 위해 \n을 사용하는 것보다 어렵지 않은 기간이있을 때마다 텍스트 편집기에서 줄 바꿈을 인쇄하도록하고 싶습니다. IOW, 각 문자의 너비를 측정하는 방법을 배우면서 다음 문자를 표시 할 위치를 알고 있으므로 현재 문자가 마침표 인 경우 줄 바꿈 동작을 수행하는 문장을 추가하는 것이 매우 간단합니다 (또는 \n은 마침표를 표시합니다).

null 종결자를 제외하고 문자 코드는 신성하지 않으며 텍스트 편집기 또는 뷰어를 작성할 때 파일의 비트를 화면의 글리프 (또는 캐리지 리턴)로 변환합니다. 개행 문자와 같은 제어 문자를 다른 문자와 구별하는 유일한 방법은 대부분의 글꼴 세트가 개행 문자를 포함하지 않는다는 것입니다. 즉, 사용 가능한 시각적 표현이 없습니다.

당신이 더 높은 수준의 추상화에서 작업하는 중이라면 아마도 자신의 텍스트 상자 컨트롤을 만들지 않을 것입니다. 이것이 사실이라면 컨트롤이 당신에게 줄 수있는 모든 줄 끝과 함께 붙어 있습니다. 이 경우에도 텍스트를 컨트롤에로드하기 전에 모든 문자열의 줄 끝 스타일을 자동으로 감지하고 변환을 수행 한 다음 해당 컨트롤에서 읽을 때 취소 할 수 있습니다. 즉, 데스크톱 응용 프로그램 개발자이고 응용 프로그램이 줄 바꿈 문자로 \n을 인식하지 못한다면 매우 친숙한 응용 프로그램이 아니며 올바른 방법으로 만들기가 어렵지 않기 때문에 아무런 변명의 여지가 없습니다. 또한 메모장을 작성한 사람은 자신을 부끄러워해야한다는 것을 의미합니다. 매일 매일 사용하는 것이 훨씬 더 쉽고 많은 사람들이 고통 받기 쉽기 때문입니다.

+1

"터미널 출력이 아닌 한 항상'\ n'을 사용해야합니다. -이게 의심 스럽지만 추론에 대한 명확성은 내가 찾고있는 것입니다. – sfarbota

+0

"\ n은 다른 모든 시스템, 응용 프로그램 및 인터넷에 사용됩니다." 많은 인터넷 프로토콜이 \ r \ n 줄 끝을 필요로합니다. HTTP 헤더는 \ r \ n으로 끝나야하고 헤더와 메시지는 \ r \ n으로 구분해야합니다. – Raatje

+0

HTTP (7230), SMTP (RFC5321)), POP3 (RFC1939) 및 전자 메일 (RFC2822)이 필요합니다. \ r \ n 줄 끝 – Raatje

관련 문제