Страница 5 из 5

Будет!

Добавлено: 19 июн 2007, 17:56
BBB
Будет будет

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

Добавлено: 22 июн 2007, 17:07
Oscar
Ребята, у вас кофе ещё не закончился? ;)

Закономерность:
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 !!!!!

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

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