256

データベースに改行のある文字列があります。その文字列を配列に変換し、新しい行ごとに、配列内の1つのインデックス位置にジャンプします。

文字列が次の場合:

My text1
My text2
My text3

私が欲しい結果はこれです:

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

19 に答える 19

401

私はいつもこれを使って大成功を収めてきました:

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

(最後の \r で更新、@LobsterMan に感謝)

于 2012-06-22T23:17:31.553 に答える
322

区切り文字として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)


二重引用符で囲まれた文字列を使用する必要があるため、\n実際には改行として解釈される ことに注意してください。
(詳細については、そのマニュアルページを参照してください。)

于 2009-09-27T12:31:37.220 に答える
289

改行は、\r\n、\r、または \n のように、プラットフォームごとに異なる方法で定義されます。

RegExp を使用して文字列を分割すると、3 つすべてを \R で一致させることができます

だからあなたの問題のために:

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

これは、Windows、Mac、および Linux の改行と一致します。

于 2011-09-21T11:22:40.750 に答える
38

PHP は、現在のシステムの改行文字を既に認識しています。EOL 定数を使用するだけです。

explode(PHP_EOL,$string)
于 2012-09-07T12:32:44.397 に答える
21

デビッドは素晴らしい方向性を持っていますが、\rを逃しました。これは私のために働いた:

$array = preg_split("/(\r\n|\n|\r)/", $string);
于 2012-07-10T13:05:32.527 に答える
12

改行によって文字列を配列に正常に分割するために、 preg_* 関数、 pregパターン、str_replaceなどは必要ありません。Linux、Mac、Windows のいずれのシナリオでも、これで十分です。

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

PHP_EOLは、サーバー プラットフォームで使用される改行文字を保持する定数です。

于 2016-03-09T22:32:59.883 に答える
9
explode("\n", $str);

('の代わりに) "は非常に重要です。そうでない場合、改行は解釈されません。

于 2009-09-27T12:31:42.570 に答える
7
<anti-answer>

As other answers have specified, be sure to use explode rather than split because as of PHP 5.3.0 split is deprecated. i.e. the following is NOT the way you want to do it:

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

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

</anti-answer>
于 2009-11-17T12:41:56.447 に答える
3

crontab で cron ジョブを表示しようとしていて、各行を区切る方法に不満を感じている人は、explode を使用してください。

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

'\n' の使用は機能していないようですが、chr(10) はうまく機能します:D

これが誰かの頭痛の種を救うことを願っています。

于 2011-07-13T06:36:23.877 に答える
3

これを使用できます:

 \str_getcsv($str, PHP_EOL);
于 2013-07-01T11:00:28.470 に答える
2

$string = nl2br($string) を実行して、改行を次のように変更できます

<br />. 

このように、システムが \r\n または \n または \r を使用するかどうかは問題ではありません

次に、それを配列にフィードできます。

$array = explode("<br />", $string);
于 2014-06-13T00:02:55.767 に答える
-1

この方法は常に私にとってうまくいきます:

$uniquepattern = "gd$#%@&~#" // Any set of characters which you don’t expect to be present in user input $_POST['text']. Better use at least 32 characters.
$textarray = explode($uniquepattern, str_replace("\r", "", str_replace("\n", $uniquepattern, $_POST['text'])));
于 2013-10-19T03:09:33.480 に答える