2013-07-19 2 views
0

У меня есть предгорный матч, чтобы найти все экземпляры названия слова или займа, но может ли кто-нибудь помочь мне изменить это, чтобы получить все экземпляры этого слова, плюс все слова до и после, с. ограничивая ограничитель.Preg Сопоставьте слово и период до и после

preg_match_all('#\b(title|loan)\b#',$html, $matches); 

Либо это, либо сказать 10 слов до и 10 слов после слова im, ищущего.

Спасибо

ответ

1
preg_match_all('#(?<pre>\w+) (title|loan) (?<post>\w+)#',$html, $matches); 

захватит слова до и после title|loan если они разделены пробелами. Достаточно легко настроить, если вам нужны более гибкие границы между вашими словами.

Вы можете получить доступ к спичке:

foreach ($matches as $match) 
{ 
    echo $match['pre']; 
    echo $match['post']; 
} 

Чтобы соответствовать все между периодами (предложения), которые содержат title|loan, вы можете сделать это:

preg_match_all('#[^.]*(title|loan)[^.]*#', $html, $matches); 

Это будет соответствовать всем символам, а не периоды до и после title|loan.

+0

Это действительно работает, как бы вы могли это сделать 2 буквы, 3 буквы, ect .... – user1789437

+0

2 буквы из чего? Из названия | ссуда? –

+0

Может быть, вы можете помочь, то, что искал, - это правильный код, чтобы найти слово, затем захватить все предложение. Таким образом, он находит слово, а затем захватывает все слова слева и справа, останавливаясь в периоде. – user1789437

Смежные вопросы