Hat ve textarea sınırı başına satır başına karakter

5 Cevap php

I'm trying to create a multiline textarea in a php page, and I want to validate so that if the user can't insert more than 50 characters per line, or more than 50 lines. The idea is that the user can paste something from a spreadsheet, but if one line has more than 50 characters, the rest will be discarded, and not inserted in the next line. That's why I want to avoid the idea of having 50 individual textboxes.

Bu javascript yapılabilir eğer ideal olacaktır (veya php kendisi, ama ben php böyle bir şey görmediler).

Teşekkürler!

UPDATE: Thanks for all that answers, but that would work only after the user submitted the form, right? For example, if the max lines is 3 instead of 50, and the user inserts 100 consecutive characters, and then a line break, it would only have 50 characters left, limiting the inputs to 2 instead of 3. Hope I was clear...

5 Cevap

Burada Matthew tarafından sunulan koda göre, ancak bu daha kısa ve aynı zamanda satır sayısını sınırlar.

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

Siz iki süreç bu yıkmak olabilir:

1: Her bir satır için 50 karakter çizgisi sınırı doğruluyoruz jQuery (veya her ne JavaScript kütüphanesi gibi) kullanın. validation plugin yararlı olabilir işlevsellik bir sürü sunuyor.

2: kullanım tarayıcı tarafında devre dışı bırakır JavaScript ihtimale çift onay için kullanın php. Bu günü nedeniyle JavaScript devre dışı bırakılıyor işlevselliği göndermek olurdu (Yani hiçbir Ajax)

Peki ne yapmak gerekir dizideki her öğe içine metni bölmek için satır sonu \ n kullanarak bir diziye metin alanını okunur. Şimdi 50 karakter sınırlaması için, her dizi elemanı kontrol edin. Ve şimdi de dizi boyutu ile de satır kontrol edebilirsiniz bir diziye tüm metin var.

explode("\n", $str) hatları içine textarea verileri kırmak için kullanın, ardından her satırın uzunluğunu kontrol.

Benzer bir yöntem Javascript ile kullanıcı ucunda kullanılan olabilir, ama güvenliğini sağlamak istiyorsanız JavaScript atlatılabilir çünkü PHP sonunda bunu yapmak gerekir.

Sonuçta bu kullanıcının hayatını kolaylaştırmak için ya da kötü şeyler oluyor önlemek olmasına bağlıdır.

Uzun çizgi uzunluğunu bulmak:

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

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