Полдня ломаю голову над проблемой - не могу написать правильно регулярку с выделением слова на русском или еще каком языке, кроме английского. например во фразе "Mister Mi drink a milk" выделяем только слово milk таким выражением /\b(milk)\b/ все работает на ура! Но если во фразе "Маленький Мук мал да удал" попробовать выделить слово мал таким способом /\b(мал)\b/ вхождений не находит. Проблема еще в том, что я не могу использовать setlocale чтобы исправить положение, так как слово поиска генерируется из PHP но сравнение происходит на JS и сравнивает скрипт с контентом из сайта. Пробовал сделать с помощью перекодировки строки в ASCII но не нашел функции которая делает это с кириллицей, нашел с французским, но толку от нее тоже мало , потому что приходится отрывать по букве и перекодировать в php-скрипте, а так как строка возвращается в utf8 substr работает некорректно, принимая специальные символы (типа наших ю,б и т.д.) за два бита, а вот напрямую если поставить только букву перекодирует нормально, но только не русский ( привожу код функции переводировки в ascii
<?php
    function uniord($ch) { 
    $n = ord($ch{0}); 
    if ($n < 128) { 
        return $n; // no conversion required 
    } 
    if ($n < 192 || $n > 253) { 
        return false; // bad first byte || out of range 
    } 
    $arr = array(1 => 192, // byte position => range from 
                 2 => 224, 
                 3 => 240, 
                 4 => 248, 
                 5 => 252, 
                 ); 
    foreach ($arr as $key => $val) { 
        if ($n >= $val) { // add byte to the 'char' array 
            $char[] = ord($ch{$key}) - 128; 
            $range  = $val; 
        } else { 
            break; // save some e-trees 
        } 
    } 
    $retval = ($n - $range) * pow(64, sizeof($char)); 
    foreach ($char as $key => $val) { 
        $pow = sizeof($char) - ($key + 1); // invert key 
        $retval += $val * pow(64, $pow);   // dark magic 
    } 
    return $retval; 
} 
$str='привет';
$s='';
echo "alert('".$str."');";
echo "alert('".hexdec(uniord(substr($str,6,1)))."');";
?>выдаю в JS потому что обработка в регулярном выражении идет в JS код ascii возращаемый функцией не соответствует букве т
 
         
                                     
                                     
                                    