18-10-2007, 16:36
|
|
|
חבר מתאריך: 19.03.07
הודעות: 75
|
|
טיפ | חיתוך תוצאות חיפוש Google סטייל
תיקנתי באג אצלי במערכת ואני מנצל את ההזדמנות:
אם יש לכם תוצאות חיפוש שכוללות טקסט ארוך אבל אתם רוצים לגזום אותו כמו בתוצאות גוגל. חיתוך סביב המילה שמחפשים והדגשה שלה...
הנה דוגמה לחיפוש של "חדר מדרגות" אצלי באתר.
http://www.saf.co.il/sal/search.php...AA&c=55&l=3&p=1
וזו הפונקציה שחותכת את ערימות המלל שמגיע מה DB
קוד PHP:
// // $test - the rough text from the DB // $search4 - Array of the keywords we are looking for // function clip_text(&$text, &$search4) { $pos = 0; $has_keywords = false; mb_regex_encoding("UTF-8"); // loop until you find a FIRST match foreach ($search4 as $keyword) { $pos = mb_strpos($text, $keyword, 0, "UTF-8"); if ($pos === FALSE) { $pos = 0; continue; } else { $has_keywords = true; break; // found it ! } } // Clip the text around the keyword $textLength = mb_strlen($text, "UTF-8"); if ($textLength > SEARCH_CLIP_TEXT_LENGTH ) { if($pos < (SEARCH_CLIP_TEXT_LENGTH / 2)) { $text = mb_substr($text, 0, SEARCH_CLIP_TEXT_LENGTH, "UTF-8") .'...'; } else { if ( $pos > ($textLength - SEARCH_CLIP_TEXT_LENGTH )) { $pos = $textLength - SEARCH_CLIP_TEXT_LENGTH; $text = '...' .mb_substr($text, $pos, SEARCH_CLIP_TEXT_LENGTH, "UTF-8"); } else { $text = '...' .mb_substr($text, ($pos - (SEARCH_CLIP_TEXT_LENGTH / 2)), SEARCH_CLIP_TEXT_LENGTH, "UTF-8") .'...'; } } } // Mark all keywords in range as Bold if ($has_keywords) { foreach ($search4 as $keyword) { $pattern_preg = $keyword; $replace_preg = '<B>' .$keyword .'</B>'; $text = mb_ereg_replace($pattern_preg, $replace_preg, $text);//, "UTF-8"); } } return S_OK; }
סתם, שיהיה במערכת אם מישהו מחפש.
|