[php] 줄 바꿈으로 PHP 문자열을 분해

간단 하죠? 글쎄, 이것은 작동하지 않습니다 :-\

$skuList = explode('\n\r', $_POST['skuList']);



답변

모범 사례

첫 번째 답변에 대한 의견에서 언급했듯이 가장 좋은 방법은 현재 시스템의 EOL ( End Of Line ) 을 나타내는 PHP 상수 PHP_EOL 을 사용하는 것 입니다.

$skuList = explode(PHP_EOL, $_POST['skuList']);

PHP는 코드 시스템을 독립적으로 만드는 데 사용할 수있는 매우 유용한 상수 를 많이 제공합니다. 이 링크 를 참조 하여 유용하고 시스템 독립적 인 디렉토리 상수를 찾으십시오.

경고

이러한 상수는 페이지 시스템을 독립적으로 만들지 만 다른 시스템에 저장된 데이터로 상수를 사용할 때 한 시스템에서 다른 시스템으로 이동할 때 문제가 발생할 수 있습니다. 새로운 시스템의 상수가 이전 시스템의 상수와 다를 수 있으며 저장된 데이터가 더 이상 작동하지 않을 수 있습니다. 따라서 데이터를 저장하기 전에 데이터를 완전히 구문 분석하여 시스템 종속 부품을 제거하십시오.

최신 정보

Andreas의 의견에 따르면 여기에 제시된 ‘모범 사례’솔루션은 설명 된 사용 사례에는 적용되지 않습니다. 서버의 EOL (PHP)은 브라우저 (모든 OS)가 사용하는 EOL과 관련이 없습니다. 그러나 그 (브라우저)는 문자열이 나오는 곳입니다.

따라서 @Alin_Purcaru ( three down ) 의 솔루션을 사용하여 모든 기지를 덮고 그의 대답 을 찬성 하십시오.

$skuList = preg_split('/\r\n|\r|\n/', $_POST['skuList']);


답변

모든 경우를 커버하십시오. 입력 내용이 Windows 환경에서 제공되는 것에 의존하지 마십시오.

$skuList = preg_split("/\\r\\n|\\r|\\n/", $_POST['skuList']);

또는

$skuList = preg_split('/\r\n|\r|\n/', $_POST['skuList']);


답변

"\n\r"(큰 따옴표) 또는 그냥 시도하십시오 "\n".

사용중인 EOL 유형이 확실하지 않은 경우 분해하기 전에 str_replace를 실행하여 “\ n \ r”을 “\ n”으로 바꾸십시오.


답변

여기에 많은 것들이 있습니다.

  • 작은 따옴표가 아닌 큰 따옴표를 사용해야합니다. 그렇지 않으면 이스케이프 된 문자가 이스케이프되지 않습니다.
  • 정상적인 순서는 \r\n아닙니다 \n\r.
  • 소스에 따라, 당신은 단지 받고 할 수 \n없이 \r(또는 특별한 경우에, 아마도 단지 \r)

마지막으로, preg_split()가능한 모든 변형을 사용하면보다 안정적인 데이터 분할 방법을 제공 할 수 있습니다 explode(). 그러나 대안 explode()으로 just과 함께 \n사용 trim()하고 \r남은 문자 를 제거하는 데 사용할 수 있습니다.


답변

이 PHP 함수는 줄 바꿈으로 문자열을 확장합니다.

주의 : Windows의 새 줄 은 \ r \ n 이고 LinuxUnix\ n입니다.
이 함수는 모든 새 줄을 Linux 모드로 변경 한 다음 분할합니다.
빈 줄은 무시됩니다주의

function splitNewLine($text) {
    $code=preg_replace('/\n$/','',preg_replace('/^\n/','',preg_replace('/[\r\n]+/',"\n",$text)));
    return explode("\n",$code);
}

$a="\r\n\r\n\n\n\r\rsalam\r\nman khobam\rto chi\n\rche khabar\n\r\n\n\r\r\n\nbashe baba raftam\r\n\r\n\r\n\r\n";
print_r( splitNewLine($a) );

산출

Array
(
    [0] => salam
    [1] => man khobam
    [2] => to chi
    [3] => che khabar
    [4] => bashe baba raftam
)


답변

시험

explode(chr(10), $_POST['skuList']);


답변

새로운 라인의 경우

$list = explode("\n", $text);

줄 바꿈 및 캐리지 리턴의 경우 (Windows 파일에서와 같이) 게시 한대로입니다. skuList가 텍스트 영역입니까?