use multibyte-aware mb_strlen() instead of strlen(); fixed issue #8)

This commit is contained in:
Savetheinternet 2011-12-07 17:47:36 +11:00
parent 825317ec38
commit 6a02dfd5aa
4 changed files with 21 additions and 15 deletions

View File

@ -72,7 +72,7 @@ function twig_sprintf_filter( $value, $var) {
}
function twig_truncate_filter($value, $length = 30, $preserve = false, $separator = '…') {
if (strlen($value) > $length) {
if (mb_strlen($value) > $length) {
if ($preserve) {
if (false !== ($breakpoint = strpos($value, ' ', $length))) {
$length = $breakpoint;

View File

@ -7,7 +7,8 @@
require 'contrib/gettext/gettext.inc';
register_shutdown_function('fatal_error_handler');
register_shutdown_function('fatal_error_handler');
mb_internal_encoding('UTF-8');
loadConfig();
function loadConfig() {

12
mod.php
View File

@ -1360,10 +1360,10 @@
// Bug fix for https://github.com/savetheinternet/Tinyboard/issues/21
$po->body = truncate($po->body, $po->link(), $config['body_truncate'] - substr_count($append_html, '<br/>'));
if(strlen($po->body) + strlen($append_html) > $config['body_truncate_char']) {
if(mb_strlen($po->body) + mb_strlen($append_html) > $config['body_truncate_char']) {
// still too long. temporarily increase limit in the config
$__old_body_truncate_char = $config['body_truncate_char'];
$config['body_truncate_char'] = strlen($po->body) + strlen($append_html);
$config['body_truncate_char'] = mb_strlen($po->body) + mb_strlen($append_html);
}
$po->body .= $append_html;
@ -1731,7 +1731,7 @@
if(empty($value))
$value = '<em>empty</em>';
else
$value = '<span style="color:maroon;">' . utf8tohtml(substr($value, 0, 110) . (strlen($value) > 110 ? '&hellip;' : '')) . '</span>';
$value = '<span style="color:maroon;">' . utf8tohtml(substr($value, 0, 110) . (mb_strlen($value) > 110 ? '&hellip;' : '')) . '</span>';
} elseif(gettype($value) == 'integer') {
$value = '<span style="color:black;">' . $value . '</span>';
}
@ -1787,11 +1787,11 @@
error(sprintf($config['error']['required'], 'title'));
// Check string lengths
if(strlen($b['uri']) > 8)
if(mb_strlen($b['uri']) > 8)
error(sprintf($config['error']['toolong'], 'URI'));
if(strlen($b['title']) > 20)
if(mb_strlen($b['title']) > 20)
error(sprintf($config['error']['toolong'], 'title'));
if(strlen($b['subtitle']) > 40)
if(mb_strlen($b['subtitle']) > 40)
error(sprintf($config['error']['toolong'], 'subtitle'));
if(!preg_match('/^\w+$/', $b['uri']))

View File

@ -323,11 +323,16 @@
}
// Check string lengths
if(strlen($post['name']) > 50) error(sprintf($config['error']['toolong'], 'name'));
if(strlen($post['email']) > 40) error(sprintf($config['error']['toolong'], 'email'));
if(strlen($post['subject']) > 100) error(sprintf($config['error']['toolong'], 'subject'));
if(!$mod && strlen($post['body']) > $config['max_body']) error($config['error']['toolong_body']);
if(strlen($post['password']) > 20) error(sprintf($config['error']['toolong'], 'password'));
if(mb_strlen($post['name']) > 35)
error(sprintf($config['error']['toolong'], 'name'));
if(mb_strlen($post['email']) > 40)
error(sprintf($config['error']['toolong'], 'email'));
if(mb_strlen($post['subject']) > 100)
error(sprintf($config['error']['toolong'], 'subject'));
if(!$mod && mb_strlen($post['body']) > $config['max_body'])
error($config['error']['toolong_body']);
if(mb_strlen($post['password']) > 20)
error(sprintf($config['error']['toolong'], 'password'));
wordfilters($post['body']);
@ -550,9 +555,9 @@
// Remove DIR_* before inserting them into the database.
if($post['has_file']) {
$post['file'] = substr_replace($post['file'], '', 0, strlen($board['dir'] . $config['dir']['img']));
$post['file'] = substr_replace($post['file'], '', 0, mb_strlen($board['dir'] . $config['dir']['img']));
if($is_an_image && $post['thumb'] != 'spoiler')
$post['thumb'] = substr_replace($post['thumb'], '', 0, strlen($board['dir'] . $config['dir']['thumb']));
$post['thumb'] = substr_replace($post['thumb'], '', 0, mb_strlen($board['dir'] . $config['dir']['thumb']));
}
$id = post($post, $OP);