[PHP]フォームに入力されたテキストを1行づつ処理する

カテゴリ: PHP

PHPでフォームに入力されたテキストを1行づつ処理させたい場合は、str_replace()explode()関数を組み合わせると便利です

サンプルプログラム

下記のプログラムは、GETパラメータで渡されたテキストを改行文字で区切って、1行づつ処理するサンプルです。

<?php
// input.php

// フォームから入力されたテキストを改行で区切って、配列に入れる
$text = str_replace(['\r\n', '\r'], PHP_EOL, $_GET['form_text']);
$lines = explode(PHP_EOL, $text);

// 配列に入れられたテキストを1行づつ処理する
foreach( $lines as $line ) {
    echo "[{$line}]" . PHP_EOL;
}

フォームから渡されてくるテキストは改行コードがCR+LF(\r\n)やLF(\r)の可能性があるので、はじめにstr_replace()で改行コードを統一しています。その後explode()で改行コードを基準にテキストを配列に変換しています。

プログラムの途中で出てくるPHP_EOLは、phpで改行コードを意味する定数です。

(上記のコードではmethod=GETで処理が呼ばれることを想定しています。POSTで処理したい場合は$_GETを$_POSTに変更してください)

動作確認用のプログラム

上記の動作を確認するには、PHPのビルトインWebサーバを使うと便利です。

まずは、同じフォルダに以下の内容でindex.htmlを作成します。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
</head>
<body>
    <form action="input.php" method="GET">
        <textarea name="form_text" rows="5" cols="80"></textarea> <br />
        <button>送信</button>
    </form>
</body>
</html>

次に、ファイルがあるディレクトリで下記のコマンドを実行し、ビルトインWebサーバを起動します。

php -S localhost:8080

起動後に、ブラウザからhttp://8080/index.htmlにアクセスすると、先ほど作成したindex.htmlが表示されます。

複数行のテキストを入力して"送信"ボタンをクリックします。

今回のサンプルでは、遷移先のページで右クリックしてソースの表示を行うと結果を確認できます。

Amazonでポイントを賢くGETする方法
Amazonギフト券チャージ で最大2.5%もお得!
こちらもおススメ
カテゴリ: PHP

コメントを残す

メールアドレスが公開されることはありません。