PCRE и русские символы :(

D4RK 4NG3L

Новичок
PCRE и русские символы :(

Помогите пожалуйста, мне нужно обрабатывать текст в котором надо отлавливать некоторые русскоязычные слова, что мне делать?
Я пробовал делать вот-так:
PHP:
preg_match_all("#какое_то_русское_слово#", $text, $mass, PREG_SET_ORDER);
Но он его не находит, подскажите пожалуйста:confused:
 

_RVK_

Новичок
приведи пример конкретного текста и конкретного рега для него.
 

D4RK 4NG3L

Новичок
PHP:
$text = "Он пошел гулять на улицу";
preg_match_all("#гулять#is", $text, $mass, PREG_SET_ORDER);
Просто пример :)
 

D4RK 4NG3L

Новичок
Обязательно попробую, просто у меня скрипт, более приличных размеров :) и лежит на работе, куда я пойду вечером, если получится то большое спасибо для _RVK_

-~{}~ 03.08.05 18:16:

=(((
setlocale() не помогло((
Может ещё кто-нибудь подскажет.
setlocale() выставил так:
PHP:
setlocale (LC_ALL, array ('ru_RU.CP1251', 'rus_RUS.1251'));
и всё равно не пашет:(
Помогите пожалуйста...
 

D4RK 4NG3L

Новичок
Не получается, приведу пример:
я играюю на досуге в игру NeverLands.Ru .
И пишу анализатор логов боя к ней,
вот небольшой пример:
123 пытался поразить соперника, но $playername увернулся от удара в голову. 123 пытался поразить соперника, но $playername увернулся от удара в торс.
__
$playername - в данном случае переменная с именем бойца, которая передаётся скрипту. Вот код моего рег. выражения:
PHP:
preg_match_all("#$playername увернулся от удара#is", $fight_log, $par, PREG_SET_ORDER);
может быть не правильно составил регу. setlocale() выглядит так:
PHP:
setlocale(LC_ALL, 'ru_RU.CP1251');
Также решил изуть реги для собственного развития :)
 

D4RK 4NG3L

Новичок
PHP:
        if(preg_match_all("#$playername увернулся от удара\sв\s([а-я]+)#is", $fight_log, 

$par, PREG_SET_ORDER))
        {
                print "<br>Увороты есть!<br>";
                $c_par = count($par);
                print $c_par;
        }
У меня на ДЕНВЕРе это не пашет, даже не пишет что были увороты, хотя они в действительности были. Мож что с кодом не правильно?
 

D4RK 4NG3L

Новичок
PHP:
var_dump(setlocale(LC_ALL, array('rus_RUS.CP1251', 'ru_RU.CP1251')));
возвращает false, в браузере вот это выводиться:
bool(false)
 

D4RK 4NG3L

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

SelenIT

IT-лунатик :)
Но вначале нужно локализовать проблему. Если без переменной ищется, а с ней - нет, будем анализировать переменную.
 

D4RK 4NG3L

Новичок
Проблема в том, что везде, где есть числа, где нет слов работает, а где слова типа: увернулся, пробил блок, заблокировал не находит(

-~{}~ 04.08.05 20:51:

действительно, ты прав без переменной находит!
А вот почему он с переменной не ищет?? Вот это вопрос!
 

SelenIT

IT-лунатик :)
D4RK 4NG3L
попробуй сделать так:
PHP:
$reg = "#$playername увернулся от удара в ([а-яё]+)#is";
echo $fight_log, '<hr>', $reg, '<br>';
preg_match_all($reg, $fight_log, $par, PREG_SET_ORDER));
print_r($par);
и посмотреть, что с чем сравнивается на самом деле.
 

D4RK 4NG3L

Новичок
всё работает, переменная выводит своё истинное значение.
____
Я не понимаю одного, почему рега не ищет совпадения переменной??

-~{}~ 06.08.05 11:25:

Блин, забыл написать, что переменная
PHP:
$playername
получается скриптом через форму. Если этого игрока не было в бою, выведется соответствующее сообщение, а если человек участвовал в бою начнёт его анализировать. Но факт остаётся фактом, что он нищет совпадение рядом с переменной, отсюда вопрос: Как сделать чтобы регулярное выражение искало текст рядом с переменной?
 
Сверху