데이터베이스에 줄 바꿈이있는 문자열이 있습니다. 해당 문자열을 배열로 변환하고 모든 줄마다 배열에서 한 인덱스 위치로 이동합니다.
문자열이 다음과 같은 경우 :
My text1
My text2
My text3
내가 원하는 결과는 다음과 같습니다.
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)
큰 따옴표로 묶인 string
을 사용해야 하므로 \n
실제로 줄 바꿈으로 해석됩니다.
(자세한 내용은 해당 매뉴얼 페이지를 참조하십시오.)
답변
나는 항상 이것을 큰 성공으로 사용했습니다.
$array = preg_split("/\r\n|\n|\r/", $string);
(@LobsterMan 덕분에 최종 \ r로 업데이트 됨)
답변
줄 바꿈은 \ r \ n, \ r 또는 \ n 플랫폼마다 다르게 정의됩니다.
RegExp를 사용하여 문자열을 분할하면 세 가지를 모두 \ R과 일치시킬 수 있습니다
그래서 당신의 문제를 위해 :
$array = preg_split ('/$\R?^/m', $string);
그것은 Windows, Mac 및 Linux의 줄 바꿈과 일치합니다!
답변
PHP는 이미 현재 시스템의 개행 문자를 알고 있습니다. EOL 상수를 사용하십시오.
explode(PHP_EOL,$string)
답변
에 대한 대안 다비즈 응답 (빠른 방법) 빠른 사용하는 것입니다 str_replace
및 explode
.
$arrayOfLines = explode("\n",
str_replace(["\r\n","\n\r","\r"],"\n",$str)
);
무슨 일이 일어나고 있습니다 :
줄 바꿈은 다른 형태로 나올 수 있기 때문에 str_replace
대신 \ n을 사용하여 \ r \ n, \ n \ r 및 \ r을 사용할 수 있습니다 (원래 \ n은 유지됩니다).
그런 다음 폭발하여 \n
모든 줄을 배열로 만듭니다.
나는이 페이지의 src에서 벤치 마크를하고 for 루프에서 1000 번 라인을 나누고
preg_replace
평균 11 초가
str_replace & explode
걸렸다. 평균 약 1 초가 걸렸다.
내 포럼에 대한 자세한 내용과 벤치 마크 정보
답변
David : 좋은 방향이지만 \ r을 놓쳤습니다. 이것은 나를 위해 일했다 :
$array = preg_split("/(\r\n|\n|\r)/", $string);
답변
줄 바꿈으로 문자열을 배열로 나누기 위해 preg_ * 함수, preg 패턴 또는 str_replace 등이 필요하지 않습니다. 모든 시나리오에서 Linux / Mac이든 m $이든 상관 없습니다.
<?php
$array = explode(PHP_EOL, $string);
// ...
$string = implode(PHP_EOL, $array);
?>
PHP_EOL 은 서버 플랫폼에서 사용하는 줄 바꿈 문자를 보유하는 상수입니다.