Вот моя потрясающая функция суммирования строк:
function summarize($haystack, $needle, $wordLimit=1) {
$preg_safe = str_replace(" ", "\s", preg_quote($needle));
$pattern = "/(\w*\S\s+){0,$wordLimit}\S*\b($preg_safe)\b\S*(\s\S+){0,$wordLimit}/ix";
if (preg_match_all($pattern, $haystack, $matches)) {
return $matches[0][0];
}
return false;
}
Эта функция ищет стрелку в большой строке и возвращает ее вместе с n словами контекставокруг иглыВроде как в результатах поиска Google отображается строка поиска в контексте результата под заголовком.
Вот как я ее использую:
$haystack = 'Lorem ipsums dolor sit amet.'; // note the plural "ipsum"
echo summarize($haystack,'ipsums');
Возвращает: Lorem ipsums dolor
(по умолчанию 1 слово вокруг иглы)
echo summarize($haystack,'ipsum'); // i.e. not exact word match of "ipsums"
Возвращает: false
Как настроить регулярное выражение так, чтобы оно возвращало тот же результат в точном соответствии слова?