проблемы с заглавными буквами.

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: проблемы с заглавными буквами.

Re: проблемы с заглавными буквами.

somewhere » 22 июн 2007, 22:04

Ну без сорцов конечно никак, thanks 2 Oscar за проявленую инициативу

Re: Проблемы с заглавными буквами.

Oscar » 22 июн 2007, 17:07

Ребята, у вас кофе ещё не закончился? ;)

Закономерность:
1. в сообщении нет ни одного латинского символа в нижнем регистре
2. длина эффективного сообщения (буквы, цифры и пробельные символы) больше 13-ти символов

Почему? Смотрим исходники этих умников из Jelsoft_a :

[syntax="php"]// ###################### Start stopshouting #######################
function fetch_no_shouting_text($text)
{

// ... cut

// we only actually touch a-z with vbstrtolower()
$effective_string = preg_replace('#[^a-z0-9\s]#i', '', $text);

// ... cut

if ($vbulletin->options['stopshouting'] AND vbstrlen($effective_string) >= $vbulletin->options['stopshouting'] AND $effective_string == strtoupper($effective_string))
{
return vbucwords(vbstrtolower($text));
}
// ... cut[/syntax]

Первым делом вырезаются все символы, кроме латинских букв, цифр и пробельных символов, так что всё остальное вообще никак на проблему не влияет,

а далее проверяется включена ли в форуме опция принудительного "отключения" КАПС-ЛОК, причём опция эта проверяется только начиная с заданной длины сообщения.

Почему 13 ? Наверное Aik так поставил.
Почему я решил, что 13 ?

Смотрим на два сообщения от BBB :
. Абвг дежзикл
. абвг дежз икл

Разница всего лишь в одном пробеле и уже не работает.
Так же это обьясняет, почему тест от Хыиуду тоже сработал нормально.

(
реально может быть не 13, а 52,
но для кириллицы должно быть 13.
52 может быть потому, что кирилличная буква представляется как а
и после "обрезания" получается в 4-ре раза "толще"
)


Остальные же тесты, написанные в этой теме, срабатывают потому, что в них был хотя бы один латинский символ в нижнем регистре.

Поскольку если такового нет, то последний предикат условия вырождается в :

"123 456" == strtoupper("123 456")
что есть всегда TRUE

Ну и далее происходит нечто забавное ))

vbstrtolower - это локализированная ф-ция, которая действительно преобразует и кирилличные буквы в нижний регистр,

а вот vbucwords - нет :confused:

[syntax="php"]/**
* Capitalizes the first letter of each word, provided it is within a-z.
* Ignores locales.
*/
function vbucwords($text) {
// ... cut[/syntax]

----------------------

Вот такие вот дела, ребятушки.
Так что, Уважаемые Админы, вырубите нафик, пожалуйста, эту опцию :D
Всё равно она не спасёт от сообщения: HHHHHHHHHHHHHHHHHHHHHHelp !!!!!

Будет!

BBB » 19 июн 2007, 17:56

Будет будет

Re: проблемы с заглавными буквами.

Duncon » 19 июн 2007, 15:36

может это новый квест угадай закономернось..
по ходу если нет точки в конце предложения - заглавных не будет.
типа вот нафиг так изващяться..

Re: проблемы с заглавными буквами.

BBB » 19 июн 2007, 14:19

хыиуду писал(а):закономерность, короче, хитрая. прячется :)
_Но мы же носим гордое имя Программистов! ;)

Re: проблемы с заглавными буквами.

Хыиуду » 19 июн 2007, 11:00

закономерность, короче, хитрая. прячется :)

Re: проблемы с заглавными буквами.

somewhere » 13 июн 2007, 11:15

на данный момент - нормально :-)

Re: проблемы с заглавными буквами.

Duncon » 12 июн 2007, 11:41

а это нормально что заглавные буквы зарубаются, причем в любом месте текста?

Re: проблемы с заглавными буквами.

Игорь Акопян » 21 май 2007, 11:41

блин, я про кнопку едит - чтобы посты не плодить ;)

с буквами - к админам надо....

Re: проблемы с заглавными буквами.

Romeo » 18 май 2007, 14:24

блин, я сдаюсь :(

Вернуться к началу