Вопрос: строка в utf-8

Dp76

Новичок
Вопрос: строка в utf-8

Доброго времени суток всем, подскажите пожалуйста новичку в пхп.

Есть у меня в mysql базе строка в uft-8.
Совсем не обязательно это русский текст. Мне нужно подсветить болдом в этом тексте некоторое слово. Для примера возьму слово "день". Дело в том, что подсветить нужно именно это слово, а не его вхождение, к примеру, в слове "деньги".
Для определения входжения слова "день" пользуюсь функцией str_pos, а потом проверяю символ ДО вхождения и символ ПОСЛЕ слова на ctype_allnum
С английским работает, но для русского, японского, и любого другого языка возникает проблема. Так как предыдущий символ может быть не просто символом а частью символа.
Тут мне предложили вариант искать вхождение не слова "день" а слова " день ", якобы с двумя пробелами, но во-первых, разделители могут быть разными, а во-вторых слово может стоять первым в строке или последним.
ПОМОГИТЕ ПЛИЗ.
 

Dp76

Новичок
Как для новичка довольно непонятно ;(

Но все равно спасибо. Да, пробовал я через mb функции - то ли не до конца разобрался
Но у меня строка такая же получается, как бы я не ставил локале
 

amorfis

я стараюсь
Dp76

Ругулярки не пробывал. Хотя могут возникнуть проблемы с локалями. Это будет только на одном серваке?
 

Dp76

Новичок
Нет это будет плагин к wordpress - движку для блогов.
тоесть устанавливать его будут на разных серверах
 

amorfis

я стараюсь
ну можно их все равно использовать. Надо только проделывать над буквами преобразования. Я тоже как-то написал модуль для Netcat на регулярках. Работал на 3 серваках из 4-х. А на том не хотел. Оказалось из-за локали сервера. Но так как модуль надо было сделать универсальным. Пришлось буквы перед поиском преобразовывать к виду ХХХ01 или как-то так. Т.е. шифровать. А затем обратно переводить. Конечно, напряжно так, но за то везде работает стопудово.

-~{}~ 04.02.06 02:08:

Еще, что на ум приходит так это:

str_word_count ()

Возвращает инфу о словах. Но работает как-то лажево. Попробуй.
 

Dp76

Новичок
str_word_count ()

попробовал с русским, ну и лажу выдает :)
 

amorfis

я стараюсь
тогда только регулярки. Хотя подожди завтра может еще что-нить посоветуют.
 

Dp76

Новичок
Да, это уж точно буду ждать - чего пока не могу понять, так это регулярки ;(
Такая у меня с ними проблема - стыдно даже сказать кому-то..
Спасибо, amorfis за участие в беседе!
 

texrdcom

Новичок
Регулярыне выражения плюс указать в скрипте четко какую кодировку используеш для регулярок плюс функции preg_ (любые) использовать ключ u preg_match('~([^\s\t\r\n]*?)~u'), $str, $res) - вот тебе елементароне регулярное выражения которое найдет все слова или ~'([a-zа-я]*?)'~is при руском и utf-8 не льзя задвать для букв \w - не сработает !
В чем проблемма вообще с рег выражениями инфы в инете хватает вот выражения птостое которое поможет тебе но надо выучить я написал выражения быстро потому на последнею инстанцию не предендую:
PHP:
<?php
setlocale(LC_ALL, '');
mb_regex_encoding('UTF-8');
ini_set('mbstring.internal_encoding', 'UTF-8'); 
$str='world ппроба авася';
echo preg_match('~(?<![a-zа-я])(проба)(?![a-zа-я])~um', $str, $res);
print_r($res);
?>
 

Dp76

Новичок
texrdcom, ОГРОМНОЕ спасибо!
Буду пробовать.
Тоесть надо будет четко просить указывать кодировку, в которой работает сайт?
Ок, сейчас позавтракаю и буду пробовать :)
 

Dp76

Новичок
Спасибо, это тоже попробую в течении дня. Обязательно скажу о результатах :)

-~{}~ 06.02.06 14:50:

В принципе с регулярными оно вроде как работает.
Но я по незнанию не могу грамотно составить правильный вариант.
Если у кого есть желание заработать немного WMZ на знании регулярных выражений - милости прошу в аську 13663943
 
Сверху