복붙노트

새 줄로 PHP 문자열 분해

PHP

새 줄로 PHP 문자열 분해

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

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

해결법

  1. ==============================

    1.베스트 프랙티스

    베스트 프랙티스

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

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

    PHP는 코드 시스템을 독립적으로 만드는데 사용할 수있는 다른 많은 유용한 상수를 제공합니다.이 링크에서 유용하고 시스템 독립적 인 디렉토리 상수를 찾을 수 있습니다.

    경고

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

    최신 정보

    Andreas의 의견에 따르면 여기서 제시 한 'Best Practice'솔루션은 설명 된 유스 케이스에는 적용되지 않습니다. 서버의 EOL (PHP)은 EOL (모든 OS)이 사용하는 EOL과 아무 관련이 없습니다. 하지만 (브라우저) 문자열이 오는 곳입니다.

    그러니 @Alin_Purcaru (세 단계 아래)의 솔루션을 사용하여 모든 기반을 커버하십시오 (그의 대답을 upvote).

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

    2.모든 케이스를 감추십시오. 귀하의 의견이 Windows 환경에서 왔는지에 의존하지 마십시오.

    모든 케이스를 감추십시오. 귀하의 의견이 Windows 환경에서 왔는지에 의존하지 마십시오.

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

    또는

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

    3."\ n \ r"(큰 따옴표) 또는 "\ n"을 사용해보십시오.

    "\ n \ r"(큰 따옴표) 또는 "\ n"을 사용해보십시오.

    가지고있는 EOL 유형을 모르면 폭발하기 전에 str_replace를 실행하고 "\ n \ r"을 "\ n"으로 바꿉니다.

  4. ==============================

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

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

    마지막 점을 감안할 때, 가능한 모든 변형을 사용하는 preg_split ()이 explode ()보다 데이터를 분할하는 신뢰할 수있는 방법을 제공한다는 것을 알 수 있습니다. 하지만 대안으로 \ n을 사용하여 explode ()를 사용하고 trim ()을 사용하여 왼쪽에있는 \ r 문자를 제거 할 수 있습니다.

  5. ==============================

    5.이 PHP 함수는 줄 바꿈으로 문자열을 폭발시킵니다. 주의 : Windows의 새 행은 \ r \ n이고 Linux 및 Unix는 \ n입니다. 이 함수는 모든 새로운 줄을 리눅스 모드로 바꾸고 그 줄을 나눕니다. 빈 줄은 무시됩니다.

    이 PHP 함수는 줄 바꿈으로 문자열을 폭발시킵니다. 주의 : Windows의 새 행은 \ r \ n이고 Linux 및 Unix는 \ n입니다. 이 함수는 모든 새로운 줄을 리눅스 모드로 바꾸고 그 줄을 나눕니다. 빈 줄은 무시됩니다.

    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
    )
    
  6. ==============================

    6.시험

    시험

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

    7.새로운 라인을 위해, 그것은 단지

    새로운 라인을 위해, 그것은 단지

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

    새 줄과 캐리지 리턴 (Windows 파일에서와 같이)은 게시 한 것과 같습니다. skuList가 텍스트 영역입니까?

  8. ==============================

    8.\ n을 큰 따옴표로 묶으십시오.

    \ n을 큰 따옴표로 묶으십시오.

    폭발 ( "\ n", $ _POST [ 'skuList']);

    작은 따옴표 안에, 내가 틀리지 않는다면, 이것은 \와 n으로 분리해서 취급됩니다.

  9. ==============================

    9.큰 따옴표를 사용해 보셨습니까?

    큰 따옴표를 사용해 보셨습니까?

  10. ==============================

    10.완벽하지는 않지만 가장 안전해야한다고 생각합니다. nl2br 추가 :

    완벽하지는 않지만 가장 안전해야한다고 생각합니다. nl2br 추가 :

    $skuList = explode('<br />', nl2br($_POST['skuList']));
    
  11. ==============================

    11.이 시도:

    이 시도:

    explode(PHP_EOF, $lines);
    
  12. ==============================

    12.우선, 나는 그것이 일반적으로 \ r \ n이라고 생각합니다. 둘째로, 모든 시스템에서 동일하지 않습니다. 창문에서만 작동합니다. 새로운 시스템을 다른 시스템이 다르게 처리하기 때문에 새로운 라인을 대체하는 방법을 찾는 것은 짜증나는 일입니다. 당신은 더 나은 행운을 가질 수 있습니다 \ n.

    우선, 나는 그것이 일반적으로 \ r \ n이라고 생각합니다. 둘째로, 모든 시스템에서 동일하지 않습니다. 창문에서만 작동합니다. 새로운 시스템을 다른 시스템이 다르게 처리하기 때문에 새로운 라인을 대체하는 방법을 찾는 것은 짜증나는 일입니다. 당신은 더 나은 행운을 가질 수 있습니다 \ n.

  13. ==============================

    13.다른 사람이이 방법을 시도했지만 효과가 없다면, 이는 내가 당신과 똑같은 두뇌 방귀를 짓었을지도 모른다는 것을 상기시키는 것입니다.

    다른 사람이이 방법을 시도했지만 효과가 없다면, 이는 내가 당신과 똑같은 두뇌 방귀를 짓었을지도 모른다는 것을 상기시키는 것입니다.

    mysql이 문자열을 먼저 이스케이프 처리 했습니까? 이 경우 개행 문자는 더 이상 개행 문자가 아닙니다.

    나는 파싱을 피하기 위해 아무 것도하지 않았고, 단지 '\ n'(실제 개행 문자보다는 백 슬래시와 n을 그대로 사용)에 적응하고 폭발시켰다.

  14. ==============================

    14.입력 텍스트 상자에서 게시 중단시 줄 바꿈? 나에게 더 빨리 작동하는 것은 텍스트 나 Excel 또는 HTML 테이블 유형 또는 개행 유형의 데이터를 복사하여 붙여 넣기하여 입력 상자 대신 텍스트 영역에 붙여 넣는 것입니다. 이렇게하면 POST에서 줄 바꿈이 그대로 유지됩니다.

    입력 텍스트 상자에서 게시 중단시 줄 바꿈? 나에게 더 빨리 작동하는 것은 텍스트 나 Excel 또는 HTML 테이블 유형 또는 개행 유형의 데이터를 복사하여 붙여 넣기하여 입력 상자 대신 텍스트 영역에 붙여 넣는 것입니다. 이렇게하면 POST에서 줄 바꿈이 그대로 유지됩니다.

     <textarea  id="txtArea" name="txtArea" rows="40" cols="170"></textarea>
     <br>
     <input type="submit" value="split lines into array" /> 
    

    파일을받는 형식으로 :

     $txtArea ='';  
     $txtArea = $_POST['txtArea'];  
     $TA = $_POST['txtArea'];  
     $string = $TA;  
     $array = preg_split ('/$\R?^/m', $string); 
    // or any of these: 
    // $array = explode(PHP_EOL,$string);  
    // $array = explode("\n", $txtArea); 
     echo "<br>A0: ".$array[0];
     echo "<br>A1: ".@$array[1];
     echo "<br>A2: ".@$array[2];
    
  15. ==============================

    15.이 방법은 항상 나를 위해 작동합니다.

    이 방법은 항상 나를 위해 작동합니다.

    $uniquepattern="@#$;?:~#abcz"//Any set of characters which you dont expect to be present in user input $_POST['skuList'] better use atleast 32 charecters.
    $skuList=explode($uniquepattern,str_replace("\r","",str_replace("\n",$uniquepattern,$_POST['skuList'])));
    
  16. ==============================

    16.이 시도:

    이 시도:

    $myString = "Prepare yourself to be caught
    You in the hood gettin' shot
    We going throw hell of blows
    got my whole frame froze";
    
    $myArray = explode(PHP_EOL, $myString);
    
    print_r($myArray);
    
  17. from https://stackoverflow.com/questions/3997336/explode-php-string-by-new-line by cc-by-sa and MIT license