$text = '<p><span style="color:rgb(0, 0, 0); font-size:14px">МОСКВА, 26 декабря. Глава Минфина РФ Антон Силуанов уверен, что в начале 2015 года рубль будет иметь тенденцию к укреплению, поскольку по макроэкономическим параметрам оснований для ослабления нет. Об этом он заявил сегодня на встрече с журналистами.</span></p> <p>"В следующем году — в начале — рубль будет иметь тенденцию только к укреплению. Оснований говорить о том, что рубль начнет обратный отход, ослабление, по макроэкономическим параметрам, нет", — цитирует РИА "Новости" министра. Он уточнил, что речь идет о I квартале.</p>';
$needle = 'МОСКВА';
$text = strip_tags(html_entity_decode($text));
$text = str_replace($needle, '<i class="found">' . $needle . '</i>', $text);
$pos = mb_strpos($text, $needle, 0, 'UTF-8');
$needleLength = mb_strlen('<i class="found">' . $needle . '</i>', 'UTF-8');
if ($pos > 1) {
echo mb_substr($text, $pos - 100, $pos + 100, 'UTF-8');
} else {
echo mb_substr($text, $pos, $pos + 100, 'UTF-8');
}
Иса: как я понял вы хотите 100 символов до и 100 символов после выводить, так?
к примеру позиция первого вхождения $pos = 5;
$from = ($pos - 100) > 0 ? 100 : 0;
ну и substr от $from до +100 символов
надеюсь правильно написал, а то голова не очень варит