Esempio n. 1
0
 /**
  * ฟังก์ชั่น ทำ 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;
 }