13-11-2007, 00:54
|
|
|
|
חבר מתאריך: 01.05.06
הודעות: 7,861
|
|
"מנוע חיפוש" שתומך ב utf-8 + percentage + marking
המון אנשים שאלו וביקשו על איך לעשות מנוע חיפוש שתומך בקידודים שונים.
אז ישבתי כמו חמור חצי יום על פונקציה של "מנוע חיפוש".
אז השעה כבר מאוחרת ולא הספקתי לבדוק יותר מדי באגים, אשב על זה כבר מחר
בינתיים אשמח לשמוע מכם על באגים:
קוד PHP:
<?php /** * finds needle in haystack * options: marking needle, calculating percentage, mentioning encoding for multybyte support * * @param string $needle * @param string $haystack * @param bool $marking * @param string $encode * @param string &$percentage */
function search($str, $haystack, $marking = false, $encode, &$percentage) { $str = iconv($encode, 'hebrew', $str); $haystack = iconv($encode, 'hebrew', $haystack); $array = explode(' ', $str); $total_occur = 0; // initializing total occurrences foreach($array as $word) { $replace = ($marking === true) ? ('<u>'.$word.'</u>') : ($word);
$haystack = str_ireplace($word, $replace, $haystack, &$occurrences); $total_occur += $occurrences; } if ($total_occur == 0) { return false; } else { $percentage = floor( ( count($array) > $total_occur ) ? ( ( $total_occur / count($array) ) * 100) : (100) ); if (count($array) > count(explode(' ', strip_tags($haystack))) && $total_occur >= count(explode(' ', strip_tags($haystack)))) $percentage = 100; return iconv('hebrew', $encode, $haystack); } } echo '<div dir="rtl">';
echo search('text', 'some text to find', true, 'utf-8', &$percentage);
echo (isset($percentage)) ? ('<br />'.$percentage.'%') : null ;
echo '</div>';
?>
קוד מלא:
לילה טוב
נערך לאחרונה ע"י netaneldj בתאריך 13-11-2007 בשעה 01:05.
|