source

PHP 상수 "PHP_EOL"은 언제 사용합니까?

topadmin 2022. 12. 3. 12:49

PHP 상수 "PHP_EOL"은 언제 사용합니까?

언제 사용하는 것이 좋습니까?

PHP의 코드 샘플에서 가끔 볼 수 있습니다.이것으로 DOS/Mac/Unix 엔드라인 문제를 해결할 수 있습니까?

네, 네?PHP_EOL크로스 플랫폼 호환 가능한 방식으로 새로운 라인 특성을 찾을 수 있으므로 DOS/Nix 문제를 처리할 수 있으므로 DOS/Nix 문제를 처리할 수 있습니다.는 표면적으로는 크로스 플랫폼 호환 방식으로 줄바꿈 문자를 찾기 위해 사용되므로 DOS/Unix 문제를 처리합니다.

PHP_EOL은 현재 시스템의 끝줄을 나타냅니다.예를 들어 Unix와 같은 시스템에서 실행되면 Windows 엔드라인을 찾을 수 없습니다.

터에서main/php.hPHP 버전 7.1 및 버전 5.630:30:PHP 버전 7.1.1 및 버전 5.6.30의 경우:

#ifdef PHP_WIN32
#   include "tsrm_win32.h"
#   include "win95nt.h"
#   ifdef PHP_EXPORTS
#       define PHPAPI __declspec(dllexport)
#   else
#       define PHPAPI __declspec(dllimport)
#   endif
#   define PHP_DIR_SEPARATOR '\\'
#   define PHP_EOL "\r\n"
#else
#   if defined(__GNUC__) && __GNUC__ >= 4
#       define PHPAPI __attribute__ ((visibility("default")))
#   else
#       define PHPAPI
#   endif
#   define THREAD_LS
#   define PHP_DIR_SEPARATOR '/'
#   define PHP_EOL "\n"
#endif

As you can see 당신이 볼 수 있듯이.PHP_EOL can be 수 있습니다."\r\n"서버의 ) (Windows 의 경우)"\n"(다른 건)5.4.0 이전 버전의 PHPRC8에 대해 가능한 세 번째 값이 있습니다.PHP_EOL"\r"(MacOSX 서버).잘못되어 2012-03-01에 버그 61193으로 수정되었습니다.

처럼 ''를 하시면 됩니다.PHP_EOL(HTML, XML, 로그 등) 통합 줄바꿈을 원하는 모든 종류의 출력에서 사용할 수 있습니다.값을 결정하는 것은 서버이지 클라이언트가 아닙니다.Windows 방문자는 Unix 서버로부터 그 가치를 얻을 수 있기 때문에, 경우에 따라서는 불편할 수 있습니다.

는 단지 싶었습니다.PHP_EOL아직 여기에 표시되지 않았기 때문에 PHP 소스에 의해 백업됩니다.

은 you 다 you you youPHP_EOL새로운 회선이 필요하거나 크로스 플랫폼이 필요하거나 할 때.

파일 시스템(로그, 내보내기 등)에 파일을 쓰는 경우가 있습니다.

생성된 HTML을 읽을 수 있도록 하려면 이 기능을 사용할 수 있습니다. 여러분도 .<br /> a PHP_EOL.

cron에서 스크립트로 php를 실행하고 있으며 출력하여 화면에 맞게 포맷해야 할 경우 사용합니다.

포맷이 필요한 전자 메일을 작성하는 경우 사용할 수 있습니다.

PHP_EOL(문자열)이 플랫폼의 올바른 'End Of Line(종료)' 기호.PHP 4.3.10 및 PHP 5.0.2 이후 사용 가능

서버의 파일 시스템에서 텍스트 파일을 읽거나 쓸 때 이 상수를 사용할 수 있습니다.

대부분의 소프트웨어는 원본에 관계없이 텍스트 파일을 처리할 수 있기 때문에 대부분의 경우 행 끝은 중요하지 않습니다.당신은 당신의 규범에 부합해야 합니다.

행 끝이 중요한 경우 상수를 사용하는 대신 행 끝을 명시적으로 지정합니다.예를 들어 다음과 같습니다.

  • HTTP 헤더는 다음과 같이 구분해야 합니다.\r\n
  • CSV 파일에서는\r\n 기호로

아직 다루지 않았고, 맹목적으로 사용하는 것을 상상할 수 있고, 나중에야 문제가 있다는 것을 눈치챌 수 있기 때문에, 「사용하지 않을 때」라고 하는 회답을 넣고 싶다.이 중 일부는 기존 답변의 일부와 다소 모순된다.

웹하는 경우, " " "는 " "를 참조하십시오.<textarea>,<pre> ★★★★★★★★★★★★★★★★★」<code> 거예요.\n andPHP_EOL.

그 이유는 코드가 Windows 호스트(Windows Azure 플랫폼 등)에 배치되어 있는 경우, 1대의 서버(Unix와 유사한 플랫폼)에서 정상적으로 동작할 수 있지만, 일부 브라우저(특히 Internet Explorer 버전)에서 페이지가 표시되는 방법을 변경할 수 있기 때문입니다.이 버전에서는 \n과 \r이 모두 인식됩니다.

이것이 IE6 이후로 여전히 문제가 되고 있는지는 확실하지 않기 때문에, 꽤 문제가 될 수 있지만, 사람들이 상황에 대해 생각해 볼 수 있도록 돕는다면 언급할 가치가 있을 것 같다.에도 (한 XHTML)가되는 경우가 수 .\r플랫폼에 따라서는 출력에 문제가 발생할 수 있습니다.또, 그러한 엣지 케이스도 있을 수 있습니다.

이미 누군가가 지적했듯이 HTTP 헤더를 반환할 때 이 헤더를 사용하는 것은 바람직하지 않습니다.이것은, 어느 플랫폼에서도 항상 RFC를 따라야 하기 때문입니다.

CSV 파일의 구분자(누군가 제안한 대로)에는 사용하지 않습니다.서버가 실행되고 있는 플랫폼은 생성되거나 사용된 파일의 행 끝을 결정하지 않아야 합니다.

아니요, PHP_EOL은 엔드라인 문제를 처리하지 않습니다. 왜냐하면 이 상수를 사용하는 시스템은 출력을 보내는 시스템이 아니기 때문입니다.

PHP_EOL을 사용하는 것은 전혀 권장하지 않습니다.Unix/Linux 사용 \n, MacOS/OS X도 \r에서 \n으로 변경되어 Windows에서는 많은 애플리케이션(특히 브라우저)에서도 올바르게 표시할 수 있습니다.Windows 에서는 기존 클라이언트측 코드를 \n만 사용하여 하위 호환성을 유지하는 것도 간단합니다.행 트리밍 딜리미터를 \r\n에서 \n으로 변경하고 trim()과 같은 함수로 랩하기만 하면 됩니다.

PHP_EOL은 파일 처리에 매우 유용하며, 특히 파일에 여러 줄의 내용을 쓸 때 유용합니다.

예를 들어 일반 파일에 쓸 때 여러 줄로 구분하는 긴 문자열이 있다고 가정합니다.\r\n을 사용하는 것이 잘 되지 않을 수 있으므로 스크립트에 PHP_EOL을 넣는 것만으로 결과는 훌륭합니다.

다음의 간단한 예를 참조해 주세요.

<?php

$output = 'This is line 1' . PHP_EOL .
          'This is line 2' . PHP_EOL .
          'This is line 3';

$file = "filename.txt";

if (is_writable($file)) {
    // In our example we're opening $file in append mode.
    // The file pointer is at the bottom of the file hence
    // that's where $output will go when we fwrite() it.
    if (!$handle = fopen($file, 'a')) {
         echo "Cannot open file ($file)";
         exit;
    }
    // Write $output to our opened file.
    if (fwrite($handle, $output) === FALSE) {
        echo "Cannot write to file ($file)";
        exit;
    }
    echo "Success, content ($output) wrote to file ($file)";
    fclose($handle);
} else {
    echo "The file $file is not writable";
}
?>

PHP_EOL의 정의는 현재 작업 중인 운영 체제의 새로운 문자를 제공하는 것입니다.

실제로는, 이것은 거의 필요 없습니다.몇 가지 경우를 생각해 봅시다.

  • 웹에 출력할 때는 일관성을 유지해야 한다는 것 외에는 규칙이 없습니다.대부분의 서버는 Unixy이므로 "\n"을 사용해야 합니다.

  • 파일로 출력하는 경우 PHP_EOL을 사용하는 것이 좋습니다.다만, 파일내에 리터럴의 뉴라인이 있는 것으로 같은 효과를 얻을 수 있습니다.기존의 뉴라인을 클럽하지 않고 Unix 상에서 CRLF 형식의 파일을 실행하려고 하면 도움이 됩니다(듀얼 부트 시스템을 사용하는 사람으로서 후자의 동작을 선호합니다).

PHP_EOL은 너무 길어서 사용할 가치가 없습니다.

도움이 될 수 있는 한 가지 분명한 점이 있습니다. 주로 단일 따옴표 문자열을 사용하는 코드를 작성하는 경우입니다.다음 사항에 대해서는 논쟁의 여지가 있다.

echo 'A $variable_literal that I have'.PHP_EOL.'looks better than'.PHP_EOL;  
echo 'this other $one'."\n";

그것의 기술은 일관되는 것이다.「」와 「」를 조합하는 경우의 문제는, 긴 스트링을 취득했을 때에, 실제로 어떤 타입의 견적을 사용했는지를 조사하러 갈 필요가 없다는 것입니다.

인생의 모든 것이 그렇듯이, 그것은 상황에 따라 다르다.

PHP_를 사용하고 있습니다.작성해야 하는 명령줄 스크립트의 EOL 상수.로컬 윈도 머신에서 개발하고 Linux 서버 박스에서 테스트합니다.상수를 사용한다는 것은 각 플랫폼에 대해 올바른 회선 엔딩을 사용할 걱정을 하지 않아도 된다는 것을 의미합니다.

DOS/Windows 표준 "newline"은 LFCR(\n\r)이 아니라 CRLF(= \r\n)입니다.후자를 사용하면 예기치 않은(사실 예상된) 행동을 일으킬 수 있습니다. :D.

오늘날 거의 모든 (잘 작성된) 프로그램에서는 UNIX 표준 LF(\n), 심지어 메일 송신자 데몬(RFC는 CRLF를 헤더와 메시지 본문의 줄바꿈으로 설정)을 사용합니다.

여러 행을 출력하는 경우 error_log()를 사용하면 편리합니다.

개발자들이 문자열을 분리할 때 unix 엔딩을 가정했기 때문에 윈도우 설치에서 많은 debug 문장이 이상하게 보인다는 것을 알게 되었습니다.

로그 스크립트가 임의의 OS를 사용할 수 있는 사용자의 작업 후에 텍스트 파일에 새 줄을 쓰는 사이트가 있습니다.

이 경우 PHP_EOL을 사용하는 것이 최적이 아닌 것 같습니다.사용자가 Mac OS에서 텍스트 파일에 쓰는 경우 \n이 표시됩니다.Windows 컴퓨터에서 텍스트 파일을 열면 줄 바꿈이 표시되지 않습니다.이 때문에 어떤 OS에서도 파일을 열 때 기능하는 "\r\n"을 사용합니다.

WebCalendar를 사용하고 있는데 xcal.php에서 행 끝부분이 "\r\n"로 하드코드되어 있기 때문에 생성된 ics 파일을 Import할 때 Mac iCal이 토해내는 것을 발견했습니다.모든 항목을 PHP_EOL로 대체하여 iCal이 만족하고 있습니다!Vista에서도 테스트했더니, Outlook에서도 파일을 Import 할 수 있었습니다.단, 행의 끝은 「\n」입니다.

주로 작은 따옴표 문자열을 사용하는 코드를 작성하고 있습니다.

echo 'A $variable_literal that I have'.PHP_EOL.'looks better than'.PHP_EOL;  
echo 'this other $one'."\n";

Windows 클라이언트에 출력할 때 이 문제가 발생했습니다.물론 PHP_EOL은 서버 측용이지만 php에서 출력되는 콘텐츠는 대부분 Windows 클라이언트용입니다.그래서 저는 다음 사람을 위해 제 연구 결과를 여기에 올려놓아야 합니다.

A) 에코 'My Text'. PHP_EOL;// 불량입니다.이것은 출력 \n과 대부분의 Windows 메모장 버전이 이것을 한 줄에 표시하기 때문입니다.또, 대부분의 Windows 어카운팅 소프트웨어에서는, 이러한 종류의 엔드 오브 라인 문자를 Import 할 수 없습니다.

B) 에코 'My Text \r\n'; // 따옴표로 묶인 php 문자열이 \r\n을 해석하지 않기 때문에 불량입니다.

C) 에코 "My Text \r\n"; // 작동한다!메모장에 올바르게 표시되며, Windows Accounting 및 Windows 제조 소프트웨어 등의 다른 Windows 소프트웨어로 파일을 Import할 때 작동합니다.

가 어떤 jumi(PHP om joomla 플가가)에서 됩니다. 런런 such such 거$csv_output .= "\n"; becomes가 되다$csv_output .= "n";

짜증나는 벌레!

원하는 결과를 얻으려면 대신 PHP_EOL을 사용하십시오.

예를 들어 이메일을 보내는 경우 PHP_EOL을 사용하여 더 많은 시스템에서 크로스 시스템 스크립트를 실행할 수 있기 때문에 시스템에 따라서는 이 상수를 사용하는 것이 유용할 수 있습니다.하지만 이 항상 정의되어 있지 않은 것을 알 수 있다고 해도 최신 php 엔진을 사용한 최신 호스팅에는 이 문제가 없지만, 이 상황을 보존하는 비트 코드를 쓰는 것이 좋다고 생각합니다.

<?php
  if (!defined('PHP_EOL')) {
    if (strtoupper(substr(PHP_OS,0,3) == 'WIN')) {
      define('PHP_EOL',"\r\n");
    } elseif (strtoupper(substr(PHP_OS,0,3) == 'MAC')) {
      define('PHP_EOL',"\r");
    } elseif (strtoupper(substr(PHP_OS,0,3) == 'DAR')) {
      define('PHP_EOL',"\n");
    } else {
      define('PHP_EOL',"\n");
    }
  }
?>

따라서 문제없이 PHP_EOL을 사용할 수 있습니다.PHP_EOL은 더 많은 시스템에서 동시에 작동해야 하는 스크립트에서 사용해야 합니다.그렇지 않으면 \n, \r, \r\n을 사용할 수 있습니다.

주의: PHP_EOL은 다음과 같습니다.

1) on Unix    LN    == \n
2) on Mac     CR    == \r
3) on Windows CR+LN == \r\n

이 답변이 도움이 되길 바랍니다.

사용하다PHP_EOL내 PHP에 브라우저가 없을 때 일정합니다.사실 간접적으로 쓰고 있어요.아래 예를 참조하십시오.
예를 들어 code.golf라는 사이트가 있습니다(기본적으로 스택 교환 코드 골프이지만 대화형입니다).콘솔 출력만 있는 PHP가 있는데 PHP_를 사용해야 합니다.이것을 사용하기 위한 EOL 상수.

이를 단축하는 방법은 PHP_를 사용해야 하는 경우입니다.EOL 상수, 다음과 같은 작업을 수행합니다.

<?php
echo $n = PHP_EOL;
?>

그러면 변수가 선언됩니다.변수는 상수 대신 새 행으로 사용할 수 있습니다. 보다 짧고, 새로운 라인이 필요한 거의 모든 것에 사용할 수 있습니다!

저는 \n\r을 사용하는 것을 선호합니다.또, Windows 시스템을 사용하고 있기 때문에, 제 경험상, \n은 문제없이 동작합니다.

PHP_EOL은 정규 표현에서는 동작하지 않기 때문에 텍스트 처리에 가장 유용한 방법이기 때문에 사용할 필요도, 사용할 필요도 없었습니다.

언급URL : https://stackoverflow.com/questions/128560/when-do-i-use-the-php-constant-php-eol