public static function doHighlight($text, $needle, $index) { $newtext = ''; $i = -1; $len_needle = mb_strlen($needle); while (mb_strlen($text) > 0) { $i = mb_stripos($text, $needle, $i + 1); if ($i == false) { $newtext .= $text; $text = ''; } else { $a = cms::lastIndexOf($text, '>', $i) >= cms::lastIndexOf($text, '<', $i); $a = $a && cms::lastIndexOf($text, '}', $i) >= cms::lastIndexOf($text, '{LNG_', $i); $a = $a && cms::lastIndexOf($text, '/script>', $i) >= cms::lastIndexOf($text, '<script', $i); $a = $a && cms::lastIndexOf($text, '/style>', $i) >= cms::lastIndexOf($text, '<style', $i); if ($a) { $newtext .= mb_substr($text, 0, $i) . '<span class="search term' . $index % 5 . '">' . mb_substr($text, $i, $len_needle) . '</span>'; $text = mb_substr($text, $i + $len_needle); $i = -1; } } } return $newtext; }