복붙노트

문자열을 배열에 넣고 줄 바꿈으로 나누는 방법?

PHP

문자열을 배열에 넣고 줄 바꿈으로 나누는 방법?

데이터베이스에 줄 바꿈이있는 문자열이 있습니다. 해당 문자열을 배열로 변환하고 모든 새 줄에 대해 배열의 한 인덱스 위치로 이동합니다.

문자열이 다음과 같은 경우 :

내가 원하는 결과는 다음과 같습니다.

Array
(
    [0] => My text1
    [1] => My text2
    [2] => My text3
)

해결법

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

    1.구분 기호로 "\ n"을 사용하여 분해 기능을 사용할 수 있습니다.

    구분 기호로 "\ n"을 사용하여 분해 기능을 사용할 수 있습니다.

    $your_array = explode("\n", $your_string_from_db);
    

    예를 들어, 다음 코드가있는 경우 :

    $str = "My text1\nMy text2\nMy text3";
    $arr = explode("\n", $str);
    var_dump($arr);
    

    당신은이 출력을 얻을 것이다 :

    array
      0 => string 'My text1' (length=8)
      1 => string 'My text2' (length=8)
      2 => string 'My text3' (length=8)
    

    큰 따옴표로 묶은 문자열을 사용해야하므로 \ n은 실제로 줄 바꿈으로 해석됩니다. (자세한 내용은 해당 매뉴얼 페이지 참조)

  2. ==============================

    2.줄 바꿈은 \ r \ n, \ r 또는 \ n 다른 플랫폼에서 다르게 정의됩니다.

    줄 바꿈은 \ r \ n, \ r 또는 \ n 다른 플랫폼에서 다르게 정의됩니다.

    RegExp를 사용하여 문자열을 분할하면 세 가지 모두를 \ R과 일치시킬 수 있습니다.

    그래서 귀하의 문제 :

    $array = preg_split ('/$\R?^/m', $string);
    

    그것은 Windows, Mac 및 Linux에서 줄 바꿈과 일치합니다!

  3. ==============================

    3.저는 항상 이것을 큰 성공과 함께 사용했습니다 :

    저는 항상 이것을 큰 성공과 함께 사용했습니다 :

    $array = preg_split("/\r\n|\n|\r/", $string);
    

    (최종 수정 된 \ r, 감사합니다 @ LobsterMan)

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

    4.PHP는 이미 현재 시스템의 개행 문자를 알고있다. EOL 상수를 사용하십시오.

    PHP는 이미 현재 시스템의 개행 문자를 알고있다. EOL 상수를 사용하십시오.

    explode(PHP_EOL,$string)
    
  5. ==============================

    5.더 빠른 Davids 응답의 대안은 str_replace를 사용하고 폭발시키는 것입니다.

    더 빠른 Davids 응답의 대안은 str_replace를 사용하고 폭발시키는 것입니다.

    $arrayOfLines = explode("\n",
                        str_replace(array("\r\n","\n\r","\r"),"\n",$str)
                );
    

    무슨 일이 일어나고 : 줄 바꿈은 다른 형식으로 올 수 있으므로 str_replace \ r \ n, \ n \ r 및 \ r 대신 \ n이 대신 사용됩니다 (원래의 \ n은 그대로 유지됩니다). 그런 다음 \ n에 폭발 시키면 배열의 모든 행이 나타납니다.

    이 페이지의 src에서 벤치 마크를 수행하고 for 회 돌이에서 1000 회를 나누었습니다. preg_replace가 평균 11 초 소요되었습니다. str_replace & explode의 평균 소요 시간은 약 1 초입니다.

    내 포럼에 대한 자세한 내용과 벤치 마크 정보

  6. ==============================

    6.데이비드 : 위대한 방향,하지만 당신은보고 싶었어. 이것은 나를 위해 일했다 :

    데이비드 : 위대한 방향,하지만 당신은보고 싶었어. 이것은 나를 위해 일했다 :

    $array = preg_split("/(\r\n|\n|\r)/", $string);
    
  7. ==============================

    7.

    explode("\n", $str);
    

    "(대신에)"는 매우 중요합니다. 그렇지 않으면 줄 바꿈이 해석되지 않습니다.

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

    8.개행으로 문자열을 배열로 끊어 내기 위해서는 preg_ * 함수 나 preg 패턴, str_replace 등이 필요 없습니다. 모든 시나리오에서 Linux / Mac 또는 m $이됩니다.

    개행으로 문자열을 배열로 끊어 내기 위해서는 preg_ * 함수 나 preg 패턴, str_replace 등이 필요 없습니다. 모든 시나리오에서 Linux / Mac 또는 m $이됩니다.

    <?php 
    
     $array = explode(PHP_EOL, $string);
     // ...  
     $string = implode(PHP_EOL, $array);
    
    ?>
    
  9. ==============================

    9.

    <anti-answer>
    

    다른 답변이 지정되었으므로 PHP 5.3.0 split이 더 이상 사용되지 않으므로 분리하지 말고 explode를 사용해야합니다. 즉 다음과 같은 방식으로 원하는 방식대로 수행 할 수 없습니다.

    $your_array = split(chr(10), $your_string);
    

    LF = "\ n"= chr (10), CR = "\ r"= chr (13)

    </anti-answer>
    
  10. ==============================

    10.StackOverflow는 hesselbom의 답변 (충분한 평판이 없음)에 대한 코멘트를 허용하지 않으므로 내 자신을 추가하고 있습니다 ...

    StackOverflow는 hesselbom의 답변 (충분한 평판이 없음)에 대한 코멘트를 허용하지 않으므로 내 자신을 추가하고 있습니다 ...

    $array = preg_split('/\s*\R\s*/', trim($text), NULL, PREG_SPLIT_NO_EMPTY);
    

    이는 공백을 자동으로 제거하고 공백 행 (PREG_SPLIT_NO_EMPTY 플래그)을 건너 뜁니다. 또한 공백 (두 번째 \ s *) 및 후행 (첫 번째 \ s *) 공백을 자동으로 제거하므로이 기능이 가장 잘 작동합니다.

    - = 옵션 = -

    선행 공백을 유지하려면 두 번째 \ s *를 제거하고 대신 rtrim ()으로 만드십시오.

    $array = preg_split('/\s*\R/', rtrim($text), NULL, PREG_SPLIT_NO_EMPTY);
    

    빈 라인을 유지할 필요가 있다면, NULL을 제거하십시오 (단지 자리 표시 자 임). PREG_SPLIT_NO_EMPTY 플래그는 다음과 같습니다.

    $array = preg_split('/\s*\R\s*/', trim($text));
    

    또는 선행 공백과 빈 줄을 모두 유지하는 중 ...

    $array = preg_split('/\s*\R/', rtrim($text));
    

    왜 공백 문자를 계속 남기고 싶은지 모르겠으니 거기에 첫 번째 \ s *를 남겨 둘 것을 제안합니다. 그러나 원하는 모든 것이 새로운 라인으로 나뉘어지면 (제목에서 알 수 있듯이) 이것은 간단합니다 (Jan Goyvaerts가 언급 한 것처럼) ...

    $array = preg_split('/\R/', $text);
    
  11. ==============================

    11.crontab에 cronjob을 표시하고 각 행을 분리하는 방법에 대해 좌절감을 느끼려는 사람은 explode를 사용하십시오.

    crontab에 cronjob을 표시하고 각 행을 분리하는 방법에 대해 좌절감을 느끼려는 사람은 explode를 사용하십시오.

    $output = shell_exec('crontab -l');
    $cron_array = explode(chr(10),$output);
    

    '\ n'을 사용하면 작동하지 않지만 chr (10)은 잘 작동합니다. D

    이것이 어떤 사람에게는 두통을 줄 수 있기를 바랍니다.

  12. ==============================

    12.당신은 이것을 사용할 수 있습니다 :

    당신은 이것을 사용할 수 있습니다 :

     \str_getcsv($str,PHP_EOL);
    
  13. ==============================

    13.줄 바꿈이 다음과 같이 바뀌도록 $ string = nl2br ($ string)을 할 수 있습니다.

    줄 바꿈이 다음과 같이 바뀌도록 $ string = nl2br ($ string)을 할 수 있습니다.

    <br />. 
    

    이 방법은 시스템이 \ r \ n 또는 \ n 또는 \ r을 사용하는지는 중요하지 않습니다.

    그런 다음 배열로 피드 할 수 있습니다.

    $array = explode("<br />", $string);
    
  14. ==============================

    14.

    $str = "My text1\nMy text2\nMy text3";
    $arr = explode("\n", $str);
    
    foreach ($arr as $line_num => $line) {
        echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
    }
    

    실제 배열 :

    $str = "My text1\nMy text2\nMy text3";
    $arr = explode("\n", $str);
    
    $array = array(); // inisiasi variable array in format array
    
    foreach ($arr as $line) { // loop line by line and convert into array
        $array[] = $line;
    };
    
    print_r($array); // display all value
    
    echo $array[1]; // diplay index 1
    

    온라인 퍼가기 :

    본문, HTML, iframe {   너비 : 100 %;   높이 : 100 %;   오버 플로우 : 숨김; }