새로운 라인으로 분할 된 배열에 문자열을 넣는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1483497

  •  18-09-2019
  •  | 
  •  

문제

내 데이터베이스에 줄이 끊어진 문자열이 있습니다. 해당 문자열을 배열로 변환하고 새로운 라인마다 배열에서 하나의 인덱스 장소를 점프합니다.

문자열이 다음과 같은 경우

내 텍스트 1
내 텍스트 2
내 텍스트 3

내가 원하는 결과는 이것입니다.

Array
(
    [0] => My text1
    [1] => My text2
    [2] => My text3
)
도움이 되었습니까?

해결책

당신은 사용할 수 있습니다 explode "사용"\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)


a를 사용해야합니다 이중 인용 문자열, 그래서 \n 실제로 라인 브레이크로 해석됩니다.
(자세한 내용은 해당 매뉴얼 페이지를 참조하십시오)

다른 팁

나는 항상 이것을 큰 성공으로 사용했습니다.

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

(최종 r, 감사합니다 @lobsterman)

라인 브레이크는 r n, r 또는 n에 따라 다르게 정의됩니다.

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

그래서 당신의 문제를 위해 :

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

그것은 Windows, Mac 및 Linux에서 라인 브레이크와 일치합니다!

PHP는 이미 현재 시스템의 Newline 캐릭터를 알고 있습니다. EOL 상수 만 사용하십시오.

explode(PHP_EOL,$string)

대안 다윗이 대답합니다 더 빠른 (더 빠른) 사용하는 것입니다. str_replace 그리고 explode.

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

일어나는 일은 다음과 같습니다.
라인 브레이크는 다른 형태로 올 수 있기 때문에 나는 str_replace r n, n r 및 r 대신 n 대신 n이 보존됩니다).
그런 다음 폭발합니다 \n 그리고 당신은 배열에 모든 줄이 있습니다.

이 페이지의 SRC에서 벤치 마크를 수행하고 Loop의 경우 1000 번 줄을 분할했습니다.
preg_replace 11 초의 AVG가 걸렸습니다
str_replace & explode 약 1 초의 AVG를 취했습니다

자세한 내용과 Bencmark 정보 내 포럼

David : 좋은 방향이지만 r을 놓쳤습니다. 이것은 나를 위해 효과가있었습니다.

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

"(대신)는 그렇지 않으면 매우 중요합니다. 라인 브레이크는 해석되지 않습니다.

당신은 preg_* 함수 나 preg 패턴이나 str_replace 내부 등이 필요하지 않습니다. 모든 시나리오에서 Linux/Mac 또는 M $이면됩니다.

<?php 

 $array = explode(PHP_EOL, $string);
 // ...  
 $string = implode(PHP_EOL, $array);

?>

php_eol 서버 플랫폼에서 사용하는 라인 브레이크 문자를 보유하는 일정한 상태입니다.

StackoverFlow는 Hesselbom의 답변에 대해 언급 할 수 없을 것입니다 (명성이 충분하지 않음).

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

이것은 또한 선행 (두 번째 s*) 및 후행 (첫 번째 s*) 공백을 자동으로 제거하고 빈 줄 (preg_split_no_empty 플래그)을 건너 뜁니다.

-= 옵션 =-

계속해서 공백을 계속하려면 두 번째 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);
<anti-answer>

다른 답변이 지정된 것처럼 사용하십시오. explode 보다는 split PHP 5.3.0 기간 동안 split 더 이상 사용되지 않습니다. 즉, 다음은입니다 아니다 당신이하고 싶은 방식 :

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

lf = " n"= chr (10), cr = " r"= chr (13)

</anti-answer>

크론 탭에 크론 조브를 표시하고 각 라인을 분리하는 방법에 대해 좌절하는 사람은 다음을 사용하십시오.

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

' n'사용은 작동하지 않는 것 같지만 chr (10)는 잘 작동합니다.

이것이 약간의 두통을 저장하기를 바랍니다.

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

 \str_getcsv($str,PHP_EOL);

라인 브레이크가

<br />. 

이 방법으로 시스템이 r n 또는 n 또는 r을 사용하는지 여부는 중요하지 않습니다.

그런 다음 배열로 공급할 수 있습니다.

$array = explode("<br />", $string);
$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

온라인 임베드 :

body, html, iframe { 
  width: 100% ;
  height: 100% ;
  overflow: hidden ;
}
<iframe src="https://ideone.com/vE1gst" ></iframe>

PHP 문서에서 이것을 선택했습니다.

<?php
  // split the phrase by any number of commas or space characters,
  // which include " ", \r, \t, \n and \f

  $keywords = preg_split("/[\s,]+/", "hypertext language, programming");
  print_r($keywords);
?>

이 방법은 항상 나에게 작동합니다.

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

'기본'패키지 만 사용하는 것도 간단한 경우에 대한 솔루션입니다.

> s <- "a\nb\rc\r\nd"
> l <- strsplit(s,"\r\n|\n|\r")
> l  # the whole list...
[[1]]
[1] "a" "b" "c" "d"
> l[[1]][1] # ... or individual elements
[1] "a"
> l[[1]][2]
[1] "b"
> fun <- function(x) c('Line content:', x) # handle as you wish
> lapply(unlist(l), fun)

그건 내 방법:

$lines = preg_split('/[\r\n]+/', $db_text, NULL, PREG_SPLIT_NO_EMPTY);

이것은 또한 모든 빈 줄도 건너 뜁니다.

문자열 또는 라인 브레이크 사이의 특수 문자 사용 \n PHP 폭발을 사용하여 우리는 이것을 달성 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top