Autor Zpráva
deryl
Profil *
Dobrý den,
jak omezit při vkládání příspěvku, aby uživatel nevložil např. na jeden řádek pár slo, pak udělal 20x enter vložil něco a zobrazily se ty všechny řádky, aby to bylo omezeno max. třeba na 3 řádky.
Díky
Majkl578
Profil
Pokud chceš pouze vypsat chybu:
if (preg_match('~\n{4,}~', $input)) {
  throw new Exception('Bylo vlozeno vice nez 3 radky za sebou');
}


Pokud by jsi chtěl tyto řádky (více než 3) nahradit právě za tři bez chyby:
$input = preg_replace('~(\n{3})\n*~', '$1', $input);
deryl
Profil *
To mi bohužel nefunguje, je to určitě zprávně?
deryl
Profil *
*správně
Majkl578
Profil
[#3] deryl
Omlouvám se, třída InvalidStateException neexistuje defaultně. Zvykl jsem si na ni z frameworku ve kterém dělám... Kód jsem upravil.
Jinak toto funguje na znak nového řádku.

Pokud by to mělo fungovat na tag <br />, tak takto:
if (preg_match('~(<br />){4,}~', $input)) {
  throw new Exception('Bylo vlozeno vice nez 3 radky za sebou');
}


a tiché nahrazení:
$input = preg_replace('~((?:<br />){3})(?:<br />)*~', '$1', $input);
deryl
Profil *
[#5] Majkl578
U toho nahrazení ale vznikne problém, když jsou ty další řádky vypsány pod sebe:
<br />
<br />
<br />
<br />
<br />
<br />
Fungujou, jen když jsou vedle sebe. Jde to ještě trochu poupravit? Díky moc
Kcko
Profil
doplnis si modifikator s
deryl
Profil *
Mohu se zeptat kam? Nedaří se mi to tam vložit správně, díky
Majkl578
Profil
Za druhé ~, problém je, že to nepomůže.
Chce to jinou úpravu:


if (preg_match('~(\s*<br />\s*){4,}~', $input)) {
  throw new Exception('Bylo vlozeno vice nez 3 radky za sebou');
}
//---------
$input = preg_replace('~((?:\s*<br />\s*){3})(?:\s*<br />\s*)*~s', '$1', $input);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0