ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

Проверка на недопустимые символы

 

284
arteshuk @arteshuk
if ( !empty( $theme ) and !preg_match( "#^[-.;:,?!\/)=(_\"\s0-9а-яА-Яa-z]+$#i", $theme ) )
вот хоть убейте не пойму, почему ЭТО, не пропускает русский символ (букву) "с"

вот с какого перепугу?

49
Kowalskis @Kowalskis
if ( !empty( $theme ) and !preg_match( "#^[-.;:,?!\/)=(_\"\s0-9а-яА-Яa-z]+$#i", $theme ) )

А остальные русские символы пропускает??
Если нет, то может проблема в том, что я выделил красным..

284
arteshuk @arteshuk
пропускает, но не все, я до "С" дошел, экспериментальным путем, "С" не пропускает....

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

7094
Dim @Render
Не понимаю, зачем писать диапазоны для больших и малых символов букв, если используется регистронезависимый модификатор i.

49
Kowalskis @Kowalskis
Render пишет:

Не понимаю, зачем писать диапазоны для больших и малых символов букв, если используется регистронезависимый модификатор i.

Совершенно с тобой согласен.

20090
Dimitry @Dimitry
Render пишет:

Не понимаю, зачем писать диапазоны для больших и малых символов букв, если используется регистронезависимый модификатор i.

потому что полная поддержка I только для латиницы...
всё зависит от локального языка на сервере

284
arteshuk @arteshuk
а сервер этта, наш любимый S1....

так как надо написать???

284
arteshuk @arteshuk
эту проблему решили, добавили модификатор /u

но есть еще одна проблема.....организация поиска

// Обрезаем строку до длины, указанной в атрибуте maxlength
$search = substr( $_POST['words'], 0, 64 );
// Убираем пробелы в начале и конце строки поиска
$search = trim( $search );

echo $search .'<br>'; // тут се путем - как я провел лето
// Убираем все "ненормальные" символы
//setlocale(LC_CTYPE, 'ru_RU.utf-8');
$good = preg_replace("/[^a-zа-я\s]/ui", " ", $search);
$good = trim( $good );

if ( empty( $good ) ) {
header( 'Location: '.$page_forum.'.html'.'?action=searchForm' );
die();
}
// Сжимаем двойные пробелы
$good = ereg_replace(" +", " ", $good);

// Получаем корни искомых слов
$stemmer = new Lingua_Stem_Ru(); //это функция из другого скрипта, но работает нормально...вроде...
$tmp = explode( " ", $good );

echo $good .'<br>'; // ибо тут вроде то же все хорошо - как я провел лето

foreach ( $tmp as $wrd ) {
// Если слово слишком короткое - не используем его
if ( strlen($wrd) < 3 ) continue;
$words[] = $stemmer->stem_word($wrd);
}
echo $wrd .'<br>'; // тут остается только - лето, но вроде так и должно быть...


// Склеиваем массив $words обратно в строку
$string = implode( "* ", $words );
$string = $string."*";
echo $string;

а вот в последнем случае начинаются чудеса....

как* пЀовел* леЂ*


но не может же implode ломать кодировку????

где ошибка, подскажите пожалуйста...спасибо!