Autor Zpráva
KarulaBarula
Profil *
Ahoj,

je v php nějaká rychlá funkce na omezení délky slova? Chci totiž uživatelům zamezit, aby vkládali komentáře např. "SSSSSUUUUUUPPPPPPPPPERRRRRR SSSSSUUUUUUPPPPPPPPPERRRRRR", které pak při větší délce bortí design webu.
Lamicz
Profil
Asi bych řešil přes
strlen();
substr();
radvis
Profil *
A co tak upravit web?:) Tobě by se asi taky nelíbilo kdyby jsi napsal dlouhý komentář a tam by byla jen čtvrtka textu.
Majkl578
Profil
Na jedno slovo je funkce strlen, v případě UTF-8 mb_strlen.
Pokud jde o souvislý text, tak třeba:
$data = 'foo bar aaaaaaačaaaaaaaščřžýěaaaaaa baz';

if (preg_match('~[a-z+ěščřžýáíéůúťďóäö]{15,}~iu', $data)) {
	throw new Exception('Nalezeno slovo délky 15 znaků nebo více');
}


Ale omezovat uživatele je špatná cesta...
AM_
Profil
preg_replace('~([a-z]{30})[a-z]*~i', '\\1', $text);

30 nahraď požadovanou délkou.
Ovšem tebou zmíněné "SSSSSUUUUUUPPPPPPPPPERRRRRR" není delší, než jedno z nejdelších slov, tedy "nejnevykrystalizovávatelnější" - je to extrém a pokud nemáš chemické fórum, nic tam zřejmě vykrystalizovávat nebude, chci naznačit, že délka slova ti určitě spolehlivě nevyfiltruje tyhle nesmysly, aniž by neosekala sem tam nějaké delší smysluplné slovo. Spíše by to chtělo odstranit slova, kde se víc jak 3x po sobě opakuje 1 písmeno, ale to mě teď nenapadá, jak.

//reakce na předchozí příspěvky:
předpokládal bych, že jde o souvislý text :) a svoboda jednoho končí tam, kde začíná svoboda druhého, pokud uživatelé mohou napsat jakékoliv bláboly, znamená to taky, že ostatní si je po nich mohou omylem přečíst.
Radek9
Profil
AM:
není delší, než jedno z nejdelších slov
A co „nejzdevětadevadesáteroneroznásobitelnějšími“? :o)
Petr ZZZ
Profil
Radek9:
A co ‚nejzdevětadevadesáteroneroznásobitelnějšími‘? :o)
To bych z fleku zakázal. :-))

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: