3

ユーザーがテキスト領域にテキストを配置できるhtmlのフォームがあります。
テキスト領域のコンテンツをMySQLデータベース(タイプTEXTのフィールド)に保存します。
次に、アプリケーションのどこかに、そのテキストをロードして配列に配置する必要があります。各インデックスには、テキストの1行が含まれます。

<textarea rows="10" cols="80">
Row one
Row two
Row tree
</textarea>

array (output in "php pseudocode"):
$array = array();
$array[0] = Row one;
$array[1] = Row two;
$array[2] = Row tree;

方法:dbに保存してから、ロードして使用します。

$br = nl2br($string,true);
$array = explode("<br />", $br);

nl2brを使用する理由は、さまざまなプラットフォームからのテキストの行末の問題を回避したいからです。/nまたは/r/nを意味します。
しかし、私の解決策では、それが機能しない原因のどこかでエラーが発生している必要があります(配列$ arrayが空です)。

より良い解決策は、おそらく爆発などを使用して配列に分割し、改行のパターンを使用することですが、ここでも、解決方法がわからない改行から始まる問題があります(\nまたは\r \の問題) n)。

誰かアドバイスしてもらえますか?ありがとう。

4

2 に答える 2

4

nl2br実際にデータをクライアントに送信する準備ができるまで、をスキップすることをお勧めします。あなたの問題に取り組むために:

// $string = $get->data->somehow();
$array = preg_split('/\n|\r\n/', $string);
于 2013-01-01T19:25:49.827 に答える
-1

スクリプトで入力を受け取ったら、データベースにデータを格納する前に、行末文字をPHP_EOLに正規化します。これは私にとって正しくテストされました。これは、「フィルター入力」プロセスのもう1つのステップです。他のEOL文字列が見つかる場合がありますが、これらが最も一般的です。

<?php // RAY_temp_user109.php
error_reporting(E_ALL);

if (!empty($_POST['t']))
{
    // NORMALIZE THE END-OF-LINE CHARACTERS
    $t = str_replace("\r\n", PHP_EOL, $_POST['t']);
    $t = str_replace("\r",   PHP_EOL, $t);
    $t = str_replace("\n",   PHP_EOL, $t);
    $a = explode(PHP_EOL, $t);
    print_r($a);
}

$form = <<<FORM
<form method="post">
<textarea name="t"></textarea>
<input type="submit" />
</form>
FORM;

echo $form;

PHP_EOLで分解し、nol2br()の部分をスキップします。var_dump()を使用して、結果の配列を確認できます。

于 2013-01-01T19:21:30.333 に答える