|
|
|
| Здравствуйте!
Нужно написать регулярное выражение, которое будет выбирать из текста все слова (целиком), которые содержат искомую комбинацию символов.
Написал вот такую ересь:
<?
function search($str,$text) {
if (!preg_match_all("/(?:[^а-яa-z0-9-]|^)([а-яa-z0-9-]*".$search."[а-яa-z0-9-]*)(?:[^а-яa-z0-9-]|$)/i",$text,$matches)) return false;
return $matches[1];
}
?>
|
Это выражение корректно работает с текстом, написанным латинскими символами, а с кириллицей, как всегда, начинаются проблемы:
Если, например в тексте "Геометрическая интерпретация общих лексических единиц", попробовать найти "метр", то вместо слова "Геометрическая" найдется слово "геометри�" (на конце квадратик в IE или ромбик в FF). Т.е. если в слове встречаются буквы "с", "р", "т" (это не полный список), то возвращаемое слово почему-то ограничевается этими буквами.
Также хотелось бы, чтоб это выражение и при поиске в русском тексте было регистронезависимо. | |
|
|