0 / 0 / 1
Регистрация: 23.01.2009
Сообщений: 37
1

Написание своего регулярного выражения

07.09.2010, 14:29. Показов 1125. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Подскажите, пожалуйста, как написать регулярное выражение.
Оно должно делать следующее:
Допустим есть поисковое слово или фраза: $word
строка поиска: $string
Нужно чтобы оно находило $word в $string и даже, если $word встречается несколько раз и выдавало результат в таком виде:
...несколько слов до искомого слова...$word - полужирным...несколько слов после искомого слова...несколько слов до искомого слова ..$word еще раз-полужирным....несколько после искомого.... и т.д.
Т.е чтобы выхватывалась из текста искомая фраза ($word) с несколькими словами до него и несколькими после - и так столько раз, сколько раз $word встречается в $string, а $word обязательно выделялось полужирным.
Подскажите, буду очень признателен.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2010, 14:29
Ответы с готовыми решениями:

Написание регулярного выражения
// /(+)/ Друзья,что значат эти выражения,подскажите пожалуйста? Друзья,так же подскажите ...

Помогите в написание регулярного выражения
Здравствуйте. Не могу правильно написать регулярку. Задание : из данного тега -<a id="news_255164"...

Жадность регулярного выражения
Привет. Вот пишу лабу, и никак не пойму, в чем проблема. Код: $pattern = "/>.*?" . $words ....

Формат регулярного выражения
$text = preg_replace('!\b({1,3})\b!u', '<strong><span style="color:red">\\0</span></strong>',...

3
7 / 8 / 6
Регистрация: 11.05.2008
Сообщений: 876
10.09.2010, 13:39 2
Лучший ответ Сообщение было отмечено Kerry_Jr как решение

Решение

Держи. С тебя пиво.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
define ('WORD','[а-яёa-z0-9 \'-]+'); #   Определяем из каких символов может состоять слово.
define ('DOTS','[.,?!:; ]*');   #   Указываем знаки препинания
define ('CNTS',1);  #   Определяем максимальное число слов до и после повтора
 
$str='Горячий привет тебе, Вася. Знаешь, я и не думал, что когда-нибудь я напишу тебе 'привет' снова'
$word = 'привет';
 
function SearchWord($string, $word){
    preg_match_all('`( '.WORD.DOTS.'){0,'.CNTS.'}  '?'.$word.' '? ?('.DOTS.WORD.DOTS.'){0,'.CNTS.'}`si',' $string ', $result);# Не забываем добавить пробелы.
    $count = sizeof($result[0]);    #   Все совпадения - в первом элементе
    if ($count){
        for($i=0; $i<$count; $i++){
            $searchResult .= eregi_replace($word, '<b>'.$word.'</b>', $result[0][$i]).'...';    #   Хватило бы и str_replace, но может быть регистр разный
        }
    }
    return $searchResult;
}
 
echo SearchWord($str, $word);
0
0 / 0 / 1
Регистрация: 21.06.2010
Сообщений: 201
10.09.2010, 15:13 3
итерацию сделать несложно, сам регексп -- например, /(.{0,80}($word).{0,80})/
0
0 / 0 / 1
Регистрация: 23.01.2009
Сообщений: 37
11.09.2010, 02:24  [ТС] 4
Большое спасибо!!! Я бы рад и пива поставить, вот только не знаю как сделать это через инет
0
11.09.2010, 02:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.09.2010, 02:24
Помогаю со студенческими работами здесь

Составление регулярного выражения
Привет. Есть теги {group=8}Какой то текст{/group} Они разумеется в tpl файле который достаётся...

Понимание регулярного выражения
Добрый день ув. пользователи! Подскажите пожалуйста, что значит эта запись. ...

Разбор регулярного выражения
Здравствуйте. Проблема такая: пытаюсь зарегистрироваться на китайском сайте, номер телефона не...

Зависает проверка регулярного выражения
Зависает проверка регулярного выражения (среда перестаёт отвечать). Выражение (проверка формата...

Ошибка составления регулярного выражения
Господа, делаю парсинг ВК, получаю страницу нужно вытащить. Строку (оповещение о том во сколько...

Составить шаблон регулярного выражения
Привет всем! Начал изучать регулярные выражения, но не понял, как сделать задание. С...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru