Я знаю, что этот вопрос старый, но я ненавижу видеть такие вопросы без ответа. В любом случае, вам нужно использовать систему полнотекстового поиска, такую как Sphinx Search. У них есть PHP API с необходимой встроенной функцией для автоматической разметки выделенного текста. Посмотрите BuildExcerpts () в их API.
У меня есть только опыт работы со Sphinx, однако я хочу быть и другими полнотекстовыми движками, в которые встроена и эта функциональность. Ключевое слово, которое вы ищете, это "выдержки".