언제 PHP 상수 "PHP_EOL"을 사용합니까?
PHP언제 PHP 상수 "PHP_EOL"을 사용합니까?
PHP_EOL을 사용하는 것이 좋은 생각은 언제입니까?
필자는 PHP의 코드 샘플에서 이것을 때때로 볼 수 있습니다. 이것은 DOS / Mac / Unix endline 문제를 처리합니까?
해결법
-
==============================
1.예, PHP_EOL은 플랫폼 간 호환 방식으로 개행 문자를 찾는 데 표면적으로 사용되므로 DOS / UNIX 문제를 처리합니다.
예, PHP_EOL은 플랫폼 간 호환 방식으로 개행 문자를 찾는 데 표면적으로 사용되므로 DOS / UNIX 문제를 처리합니다.
PHP_EOL은 현재 시스템의 endline 문자를 나타냅니다. 예를 들어 유닉스 계열 시스템에서 실행될 때 Windows 엔드 라인을 찾지 못합니다.
-
==============================
2.PHP 버전 5.6.30 및 버전 7.1.1의 main / php.h에서 :
PHP 버전 5.6.30 및 버전 7.1.1의 main / php.h에서 :
#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
PHP_EOL은 "\ r \ n"(Windows 서버) 또는 "\ n"(다른 서버) 일 수 있습니다. 5.4.0RC8 이전의 PHP 버전에서는 PHP_EOL의 세 번째 값으로 "\ r"(MacOSX 서버에서)이 가능했습니다. 버그 였고 버그 61193으로 2012-03-01에 수정되었습니다.
이미 다른 사람들이 말했듯이, PHP_EOL을 모든 종류의 출력에서 사용할 수 있습니다 (HTML, XML, 로그 ...와 같은 유효한 값이있는 곳). 통합 된 개행을 원할 때 (그리고 내 생각에 이것을 원할 것입니다) .
PHP 소스가 뒷받침하는 PHP_EOL의 가능성을 보여주고 싶었습니다. 아직 여기에 표시되지 않았기 때문에 ...
-
==============================
3.새 라인을 원할 때 PHP_EOL을 사용하고 크로스 플랫폼이되기를 원합니다.
새 라인을 원할 때 PHP_EOL을 사용하고 크로스 플랫폼이되기를 원합니다.
이것은 파일 시스템에 파일을 쓰고있을 때 (로그, 익스포트, 기타) 일 수 있습니다.
생성 된 HTML을 읽기 쉽도록하려면 사용할 수 있습니다. PHP_EOL을 사용하면
을 따라갈 수 있습니다.cron에서 스크립트로 PHP를 실행 중이고 뭔가를 출력하고 화면에 맞게 형식화해야하는 경우에 사용합니다.
전송할 이메일을 작성하는 중 일부 형식이 필요한 경우이를 사용할 수 있습니다.
-
==============================
4.서버 파일 시스템에서 텍스트 파일을 읽거나 쓸 때이 상수를 사용할 수 있습니다.
서버 파일 시스템에서 텍스트 파일을 읽거나 쓸 때이 상수를 사용할 수 있습니다.
대부분의 소프트웨어는 원본 파일과 관계없이 텍스트 파일을 처리 할 수 있기 때문에 대부분의 경우 줄 끝은 중요하지 않습니다. 당신은 당신의 코드와 일치해야한다.
줄 끝이 중요 할 경우 상수를 사용하는 대신 줄 끝을 명시 적으로 지정하십시오. 예 :
-
==============================
5.나는 그것을 "사용하지 않을 때"아직 다루지 않았으며 맹목적으로 사용되었다고 상상할 수있는 답변을 던지고 싶다. 이 중 일부는 기존 답변 중 일부와 모순됩니다.
나는 그것을 "사용하지 않을 때"아직 다루지 않았으며 맹목적으로 사용되었다고 상상할 수있는 답변을 던지고 싶다. 이 중 일부는 기존 답변 중 일부와 모순됩니다.
HTML, 특히
그 이유는 코드가 작동하는 동안 (예 : Unix와 같은 플랫폼 일 수 있습니다) Windows 호스트 (예 : Windows Azure 플랫폼)에 배포 된 경우 페이지가 일부 브라우저에 표시되는 방식을 변경할 수 있습니다 (특히 Internet Explorer - 일부 버전에는 \ n과 \ r이 모두 표시됩니다).
이것이 IE6 이래로 여전히 문제가되는지 확신 할 수 없으므로 상당히 논란의 여지가 있지만 사람들이 컨텍스트에 대해 생각하게하는 데 도움이된다면 언급 할만한 가치가있는 것으로 보인다. 다른 플랫폼 (예 : 엄격한 XHTML)의 경우 플랫폼에 따라 출력 결과에 문제가 발생할 수 있으며 그 외 다른 경우가있을 수 있습니다.
누군가에 의해 이미 언급 되었 듯이, HTTP 헤더를 반환 할 때이를 사용하고 싶지는 않습니다. 왜냐하면 이들은 항상 모든 플랫폼의 RFC를 따라야하기 때문입니다.
CSV 파일의 구분 기호와 같은 용도로 사용하지 않을 것입니다 (다른 사람이 제안한대로). 서버가 실행중인 플랫폼은 생성되거나 사용 된 파일의 행 끝을 결정해서는 안됩니다.
-
==============================
6.필자는 파일 처리에 PHP_EOL이 매우 유용하다는 것을 알았습니다. 특별히 파일에 여러 줄의 내용을 쓰는 경우에 유용합니다.
필자는 파일 처리에 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"; } ?>
-
==============================
7.PHP_EOL은 endline 문제를 처리하지 않습니다. 그 이유는 상수를 사용하는 시스템이 출력을 보내는 시스템과 같지 않기 때문입니다.
PHP_EOL은 endline 문제를 처리하지 않습니다. 그 이유는 상수를 사용하는 시스템이 출력을 보내는 시스템과 같지 않기 때문입니다.
PHP_EOL을 전혀 사용하지 않는 것이 좋습니다. 유닉스 / 리눅스 사용 \ n, MacOS / OS X가 \ r에서 \ n으로 변경되었으며 Windows에서 많은 응용 프로그램 (특히 브라우저)이 올바르게 표시 할 수 있습니다. Windows에서 기존 클라이언트 측 코드를 \ n 전용으로 변경하고 이전 버전과의 호환성을 유지하는 것도 쉽습니다. \ r \ n에서 줄 바꿈을위한 구분 기호를 \ n으로 변경하고 trim () 함수처럼 줄 바꾸기 .
-
==============================
8.PHP_EOL의 정의는 작업중인 운영 체제의 개행 문자를 제공한다는 것입니다.
PHP_EOL의 정의는 작업중인 운영 체제의 개행 문자를 제공한다는 것입니다.
실제로는 거의 필요하지 않습니다. 몇 가지 경우를 생각해보십시오.
PHP_EOL은 너무 길기 때문에 실제로 사용할 가치가 없습니다.
-
==============================
9.유용 할 수있는 분명한 장소가 있습니다. 주로 작은 따옴표 문자열을 사용하는 코드를 작성할 때 유용합니다. 그 여부에 대한 논쟁 :
유용 할 수있는 분명한 장소가 있습니다. 주로 작은 따옴표 문자열을 사용하는 코드를 작성할 때 유용합니다. 그 여부에 대한 논쟁 :
echo 'A $variable_literal that I have'.PHP_EOL.'looks better than'.PHP_EOL; echo 'this other $one'."\n";
그것의 예술은 일관성이 있어야합니다. ''와 ''를 섞어서 매칭 할 때의 문제는, 긴 문자열을 얻을 때, 당신이 사용한 인용문의 유형을 찾기 위해 정말로 사냥을하고 싶지 않다는 것입니다.
인생의 모든 것들과 마찬가지로 상황에 달려 있습니다.
-
==============================
10.DOS / Windows 표준 "개행"은 LFCR (\ n \ r)이 아닌 CRLF (= \ r \ n)입니다. 후자를 넣으면 예상치 못한 (실제로는 기대되는! : D) 행동을 생성 할 가능성이 있습니다.
DOS / Windows 표준 "개행"은 LFCR (\ n \ r)이 아닌 CRLF (= \ r \ n)입니다. 후자를 넣으면 예상치 못한 (실제로는 기대되는! : D) 행동을 생성 할 가능성이 있습니다.
요즘 거의 모든 (잘 쓰여진) 프로그램은 메일 발신자 데몬 (RFC는 헤더와 메시지 본문에 대한 줄 바꿈으로 CRLF를 설정 함)조차도 개행 코드 용 UNIX 표준 LF (\ n)를 허용합니다.
-
==============================
11.나는 로깅 스크립트가 사용자가 임의의 OS를 사용할 수있는 액션 후에 텍스트 파일에 새로운 라인의 텍스트를 쓰는 사이트를 가지고있다.
나는 로깅 스크립트가 사용자가 임의의 OS를 사용할 수있는 액션 후에 텍스트 파일에 새로운 라인의 텍스트를 쓰는 사이트를 가지고있다.
이 경우에는 PHP_EOL을 사용하는 것이 최적의 것으로 보이지 않습니다. 사용자가 Mac OS에서 텍스트 파일에 쓰면 \ n 넣습니다. Windows 컴퓨터에서 텍스트 파일을 열 때 줄 바꿈이 표시되지 않습니다. 이러한 이유로 나는 "\ r \ n"대신에 어떤 OS에서든 파일을 열 때 사용할 수 있습니다.
-
==============================
12.여러 행을 출력하는 경우 error_log ()를 사용하면 편리합니다.
여러 행을 출력하는 경우 error_log ()를 사용하면 편리합니다.
나는 개발자가 문자열을 분리 할 때 유닉스 엔딩을 가정했기 때문에 많은 윈도우에서 디버그 구문이 이상하게 보임을 발견했다.
-
==============================
13.주로 작은 따옴표 문자열을 사용하는 코드를 작성하고 있습니다.
주로 작은 따옴표 문자열을 사용하는 코드를 작성하고 있습니다.
echo 'A $variable_literal that I have'.PHP_EOL.'looks better than'.PHP_EOL; echo 'this other $one'."\n";
-
==============================
14.필자가 작성해야하는 일부 명령 행 스크립트에서 PHP_EOL 상수를 사용합니다. 로컬 Windows 컴퓨터에서 개발 한 다음 Linux 서버 상자에서 테스트합니다. 상수를 사용한다는 것은 각기 다른 플랫폼마다 올바른 줄 끝을 사용하는 것에 대해 걱정할 필요가 없다는 것을 의미했습니다.
필자가 작성해야하는 일부 명령 행 스크립트에서 PHP_EOL 상수를 사용합니다. 로컬 Windows 컴퓨터에서 개발 한 다음 Linux 서버 상자에서 테스트합니다. 상수를 사용한다는 것은 각기 다른 플랫폼마다 올바른 줄 끝을 사용하는 것에 대해 걱정할 필요가 없다는 것을 의미했습니다.
-
==============================
15.나는 WebCalendar를 사용하고 있으며, 줄의 끝이 "\ r \ n"으로 xcal.php에 하드 코드되어 있기 때문에 생성 된 ics 파일을 가져올 때 Mac iCal barfs를 찾았습니다. 들어가서 PHP_EOL로 모든 상황을 바꿨습니다. 이제 iCal이 행복합니다! 비스타에서 테스트 한 결과 Outlook의 줄 끝 문자가 "\ n"인데도 Outlook에서 파일을 가져올 수있었습니다.
나는 WebCalendar를 사용하고 있으며, 줄의 끝이 "\ r \ n"으로 xcal.php에 하드 코드되어 있기 때문에 생성 된 ics 파일을 가져올 때 Mac iCal barfs를 찾았습니다. 들어가서 PHP_EOL로 모든 상황을 바꿨습니다. 이제 iCal이 행복합니다! 비스타에서 테스트 한 결과 Outlook의 줄 끝 문자가 "\ n"인데도 Outlook에서 파일을 가져올 수있었습니다.
-
==============================
16.jumi (PHP 용 joomla 플러그인)가 코드를 컴파일 할 때 코드에서 모든 백 슬래시가 제거됩니다. 그러한 것은 $ csv_output. = "\ n"; $ csv_output. = "n"이됩니다.
jumi (PHP 용 joomla 플러그인)가 코드를 컴파일 할 때 코드에서 모든 백 슬래시가 제거됩니다. 그러한 것은 $ csv_output. = "\ n"; $ csv_output. = "n"이됩니다.
매우 짜증나는 버그!
대신 PHP_EOL을 사용하여 결과를 얻습니다.
-
==============================
17.나는 \ n \ r을 사용하는 것을 선호한다. 또한 나는 윈도우 시스템에있어 \ n 내 경험에 잘 작동합니다.
나는 \ n \ r을 사용하는 것을 선호한다. 또한 나는 윈도우 시스템에있어 \ n 내 경험에 잘 작동합니다.
PHP_EOL은 정규 표현식에서 작동하지 않기 때문에, 이것들은 텍스트를 다루는 가장 유용한 방법입니다. 그런 다음 그것을 사용하거나 필요가 없습니다.
from https://stackoverflow.com/questions/128560/when-do-i-use-the-php-constant-php-eol by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP에서 빈 값으로부터 기본 객체를 생성 하시겠습니까? (0) | 2018.09.08 |
---|---|
일련의 부모 - 자식 관계를 계층 트리로 변환 하시겠습니까? (0) | 2018.09.08 |
PHP를 통해 CSV로 내보내기 (0) | 2018.09.08 |
PHP를 사용한 가장 간단한 양방향 암호화 (0) | 2018.09.08 |
PHP에서 데이터를 암호화 / 해독하는 방법? (0) | 2018.09.08 |