/** * ฟังก์ชั่น ทำ highlight ข้อความ * * @param string $text ข้อความ * @param string $needle ข้อความที่ต้องการทำ highlight * @return string คืนค่าข้อความ ข้อความที่ highlight จะอยู่ภายใต้ tag mark */ public static function doHighlight($text, $needle) { $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 = gcms::lastIndexOf($text, '>', $i) >= gcms::lastIndexOf($text, '<', $i); $a = $a && gcms::lastIndexOf($text, '}', $i) >= gcms::lastIndexOf($text, '{LNG_', $i); $a = $a && gcms::lastIndexOf($text, '/script>', $i) >= gcms::lastIndexOf($text, '<script', $i); $a = $a && gcms::lastIndexOf($text, '/style>', $i) >= gcms::lastIndexOf($text, '<style', $i); if ($a) { $newtext .= mb_substr($text, 0, $i) . '<mark>' . mb_substr($text, $i, $len_needle) . '</mark>'; $text = mb_substr($text, $i + $len_needle); $i = -1; } } } return $newtext; }