Здравейте туристи,
пиша си системка за съобщения към сайта и се натъкнах на следния проблем...идеята ми е да да огранича текста на съобщението до да кажем 500 символа и заглавието на съобщението до 20. Принципно съм си направил ограничение още при самото писане с javascript, но искам да се подсигуря за евентуално изключване на javascripta-а на браузъра на потребителя и да направя проверка непосредствено преди записа в базата.
Ето какво имаме:
1. Станицата ми е utf-8:
2. html формичката:
3. И след пост заявката:
Въпроса е, че като въеда "Първо съобщение", което реално е 15 символа ми изписва:
Когато въведа символи на латиница всичко е точно, но когато са на кирилица....един вид space го брои за един символ, а всичко въведено на кирилица го брои за по 2 символа.
Принципно си измислих решение за проблема, преобразувам всичко написано на кирилица на "шльокавица" и след това проверявам дължината. Но ако някой може да ми обясни защо аджеба става така...или пък ако може да ми предложи по-добро решение на този проблем от ще съм благодарен
пиша си системка за съобщения към сайта и се натъкнах на следния проблем...идеята ми е да да огранича текста на съобщението до да кажем 500 символа и заглавието на съобщението до 20. Принципно съм си направил ограничение още при самото писане с javascript, но искам да се подсигуря за евентуално изключване на javascripta-а на браузъра на потребителя и да направя проверка непосредствено преди записа в базата.
Ето какво имаме:
1. Станицата ми е utf-8:
HTML:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2. html формичката:
HTML:
<form action='' method='post' id='msgform' name='msgform'>
Subject: <input type='text' style='width:250px' id='msg_title' name='msg_title' />
Message: <textarea id='msg_text' name='msg_text' rows='8' cols='40'></textarea>
<input type='submit' id='write_msg' name='write_msg' value=Write />
</form>
3. И след пост заявката:
PHP:
if(isset($_POST['write_msg'])){
$msg_title = trim($_POST['msg_title']);
$msg_text = trim($_POST['msg_text']);
if(strlen($msg_title)>$fill_settings["max_msg_title"]){
echo("Максималния брой позволени символи са ".$fill_settings["max_msg_title"].", а вие въвеждате "strlen($msg_title).'<br />');
$len_to_del = strlen($msg_title) - $fill_settings["max_msg_title"];
echo("Моля изтрийте ".$len_to_del." символа и опитайте отново<br />");
}else{
//дължината е в позволението
}
}
Въпроса е, че като въеда "Първо съобщение", което реално е 15 символа ми изписва:
Максималния брой позволени символи са 20, а вие въвеждате 29.
Моля изтрийте 9 символа и опитайте отново.
Когато въведа символи на латиница всичко е точно, но когато са на кирилица....един вид space го брои за един символ, а всичко въведено на кирилица го брои за по 2 символа.
Принципно си измислих решение за проблема, преобразувам всичко написано на кирилица на "шльокавица" и след това проверявам дължината. Но ако някой може да ми обясни защо аджеба става така...или пък ако може да ми предложи по-добро решение на този проблем от ще съм благодарен