2009-08-31 18 views
3

PHPページで複数行のテキストエリアを作成しようとしていますが、ユーザーが1行に50文字以上を挿入できない場合、ライン。 考えられるのは、ユーザーがスプレッドシートから何かを貼り付けることができるということですが、1行に50文字を超えると、残りは破棄され、次の行には挿入されません。だから私は50個の個別のテキストボックスを持つという考えを避けたいのです。1行あたりの文字数と1文字あたりの行数の制限

これはjavascript(またはPHP自体でも可能ですが、私はPHPのようなものは見たことがない)には理想的でしょう。

ありがとうございます!

更新:すべてのお返事ありがとうございますが、ユーザーがフォームを送信した後にのみ有効です。 たとえば、max行が50ではなく3で、ユーザーが100個の連続した文字を入力した後に改行すると、50文字しか残らず、入力を3個ではなく2個に制限します。 ...

答えて

1

ここでは、マシューによって提供されるコードに基づいて、であり、これは短く、また、行の数を制限します。最長ラインの

$lines = array_slice(explode("\n", $string), 0, 50); // max 50 lines 

foreach ($lines as $key => $value) 
{ 
    $lines[$key] = substr(trim($value), 0, 50); // max 50 chars 
} 

$string = implode("\n", $lines); 
0

explode("\n", $str)を使用して、テキストエリアのデータを改行し、各行の長さを確認します。

Javascriptを使用してユーザー側でも同様の方法を使用できますが、セキュリティを確保したい場合は、Javascriptを回避できるため、PHP側で行う必要があります。

最終的には、これがユーザーの生活を楽にするか悪いことが起こるのを防ぐかによって異なります。

1

PHP:

$max_length = 50; 
$lines = explode("\n", $input); 
for($i = 0; $i < count($lines); $i++) 
{ 
    $lines[$i] = rtrim($lines[$i]); // just incase there's a "\r" 
    $lines[$i] = (strlen($lines[$i]) <= 50 ? 
         $lines[$i] : 
         substr($lines[$i], 0, 50)); 
} 
$input = implode("\n", $lines); 
+1

バグがあります.trimr()ではなくrtrim()です。 –

0

検索の長さ:

1:

$length = array_reduce(array_map(explode("\n", $string), 'strlen'), 'max', 0); 
1

次の2つのプロセスにこれを打破する可能性が50を検証するためにjQueryの(または、これまでどのようなJavaScriptライブラリあなたが好き)を使用します各行の文字行制限。 validation pluginには、役に立つかもしれない多くの機能が用意されています。

2:ブラウザ側でJavaScriptを無効にする場合は、phpを使用して再確認してください。これは、JavaScriptが無効になっているためにJavaScriptを使用できないために送信機能でなければなりません。(So no Ajax)

これで、テキスト区切りをテキスト行配列内の要素です。各配列要素の50文字制限を確認してください。そして、あなたは配列にすべてのテキストを持っているので、配列のサイズで行をチェックすることもできます。

+0

提出は、フラグを変更するためにjavascriptを使用し、アクションは同じページにあります。 JavaScriptが無効になっていると問題はないと思われますが、ページは機能しません。 – nightshadex101

+1

@ nightshadex101、私はあなたと私は異なる定義があると思います。問題はないと思います。ユーザーに壊れたページが表示された場合、なぜ彼らがあなたに戻ってきたら、何とかキャプティブを持っていますか? O.O –

+0

私は@ricebowlに同意します.Javascriptが有効になっているかどうかにかかわらず、ユーザーは同じではないにしても同じアクションを経験する必要があります。これがバックエンドのチェック/機能を行う理由です。もう1つのアプローチ(推奨されていませんが、実行できます)は、JavaScriptを有効にして有効にする必要がある場合にエンドユーザーにメッセージを表示し、有効な場合は正しいページを表示します。それでも良いコーディング手法ではなく、ユーザーエクスペリエンスでもないので、このアプローチに対しては強く推奨します。 –

関連する問題