Регулярные выражения: выбрать предложения, в которых есть искомое слово

nikita

Новичок
Регулярные выражения: выбрать предложения, в которых есть искомое слово

Собственно как сделать...
Составил выражения для того, чтобы текст разбивался на предложения:
PHP:
preg_match_all( '/[A-Z].*?[.!?](?=\s|$)/s', $text, $array );
Куда или как вставить "слово, которое я ищу", чтобы в элементах массива оказалось по одному предложению с этим словом?
 

WP

^_^
Шедеврально)) Особенно порадовало [.!?].
PHP:
$string = 'The quick brown fox jumps over the lazy dog. PHP is the website scripting language of choice.';
$word = 'php';
preg_match_all('~(?<=[\.!?]|\A)[^\.!?]+?'.preg_quote($word,'~').'[^\.!?]+?(?:[\.!?]|\z)~i',$string,$m);
var_dump($m);
/*
array(1) {
  [0]=>
  array(1) {
    [0]=>
    string(49) " PHP is the website scripting language of choice."
  }
}
*/
Это ^^ вариант в лоб.
А я бы сделал
PHP:
$string = 'The quick brown fox jumps over the lazy dog. PHP is the website scripting language of choice.';
$word = 'php';
$m = preg_grep('~'.preg_quote($word,'~').'~i',preg_split('~[\.!?]~',$string));
var_dump($m);
/*
array(1) {
  [1]=>
  string(48) " PHP is the website scripting language of choice"
}
*/
Студент пупкин ответ закончил.
 

Гравицапа

elbirret elcno
WP
Поясни пжста роль \A и \z...
Из мана что-то не совсем понятно их предназначение ...
 

Malcolm_Reed

Новичок
Гравицапа как я понял \A и \z - это начало и конец слова соответсвенно.
 

WP

^_^
Гравицапа
Начало и конец строки.
Malcolm_Reed
Граница слова - \b.
 
Сверху