3 Stimmen

Begrenzung der Zeichen pro Zeile und der Zeilen pro Textarea

Ich versuche, eine mehrzeilige Textarea in einer PHP-Seite zu erstellen, und ich möchte validieren, so dass, wenn der Benutzer nicht mehr als 50 Zeichen pro Zeile oder mehr als 50 Zeilen einfügen kann. Die Idee ist, dass der Benutzer etwas aus einer Tabellenkalkulation einfügen kann, aber wenn eine Zeile mehr als 50 Zeichen hat, wird der Rest verworfen und nicht in die nächste Zeile eingefügt. Deshalb möchte ich die Idee von 50 einzelnen Textfeldern vermeiden.

Es wäre ideal, wenn dies in javascript (oder php selbst, aber ich habe nicht gesehen, etwas wie es in php) getan werden könnte.

Danke!

UPDATE: Vielen Dank für alle Antworten, aber das würde nur funktionieren, nachdem der Benutzer das Formular abgeschickt hat, richtig? Wenn z. B. die maximale Zeilenanzahl 3 statt 50 beträgt und der Benutzer 100 aufeinanderfolgende Zeichen einfügt und dann einen Zeilenumbruch vornimmt, bleiben nur 50 Zeichen übrig, wodurch die Eingaben auf 2 statt 3 begrenzt werden. Ich hoffe, ich habe mich klar ausgedrückt...

2voto

Alix Axel Punkte 146320

Hier ist er, basierend auf dem von Matthew zur Verfügung gestellten Code, aber dieser ist kürzer und begrenzt auch die Anzahl der Zeilen.

$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);

1voto

Matthew Scharley Punkte 121038

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);

1voto

Phill Pafford Punkte 80621

Man könnte dies in zwei Prozesse unterteilen:

1: Verwenden Sie jQuery (oder eine beliebige JavaScript-Bibliothek), um die 50-Zeichen-Grenze für jede Zeile zu validieren. Die Validierungs-Plugin bietet viele Funktionen, die nützlich sein könnten.

2: Verwenden Sie php, um zu überprüfen, ob die Verwendung das JavaScript auf der Browserseite deaktiviert. Dies müsste die On-Submit-Funktionalität sein, da JavaScript deaktiviert ist (also kein Ajax).

Sie müssen also den Textbereich in ein Array einlesen, indem Sie den Zeilenumbruch \n um den Text in jedes Element des Arrays aufzuteilen. Überprüfen Sie nun jedes Array-Element auf die 50-Zeichen-Beschränkung. Da Sie nun den gesamten Text in einem Array haben, können Sie auch die Zeilen anhand der Array-Größe überprüfen.

0voto

Artelius Punkte 46771

Verwenden Sie explode(" \n ", $str) um die Daten des Textbereichs in Zeilen aufzuteilen und dann die Länge jeder Zeile zu überprüfen.

Eine ähnliche Methode könnte auf der Benutzerseite mit Javascript verwendet werden, aber wenn Sie Sicherheit gewährleisten wollen, müssen Sie es auf der PHP-Seite tun, weil Javascript umgangen werden kann.

Letztlich hängt es davon ab, ob dies das Leben des Nutzers erleichtern oder schlimme Dinge verhindern soll.

0voto

soulmerge Punkte 70900

Finde die Länge der längsten Linie:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X