/**
* Useful routine for text highlighting wihin search scripts
* Searchs the selected words in the texts and highlight them
*
* @param array $texts Array of found texts and fragments. These
* may be result data recieved from any
* database or files.
* @param array $words Array of lookup words. You can pass them
* from the user request forms or URL.
* @param array $options
* @return array Array of found original texts with highlighted words
*/
function search_hilite($texts, $words, $options=array())
{
static $defOptions = array(
'color' => 0xFFFFFF,
'class' => 'hilite',
);
$options = array_merge($defOptions, $options);
if (($options['color'] & 0x00FF00) < 0x008000) {
$options['color'] = (~$options['color']) & 0xFFFFFF;
}
$nvcolor = (~$options['color']) & 0xFFFFFF;
$bgcolor = $fgcolor = $options['color'];
foreach ($words as $i => $word) {
do {
$bgcolor = ($bgcolor + 0x906030) & 0xFFFFFF;
} while ($bgcolor == $options['color']);
$fgcolor = (($bgcolor & 0x00FF00) < 0x008000) ? $options['color'] : $nvcolor;
$search_words[$i] = "/\b($word)\b/mi";
$hilite_words[$i] = sprintf("\\1",
$options['class'],
$bgcolor,
$fgcolor);
}
$hilite_texts = array();
foreach ($texts as $i => $text) {
$hilite_texts[$i] = preg_replace($search_words, $hilite_words, $text);
}
return $hilite_texts;
}
/**
* Example
*/
$words = array("queen", "to be", "tomato", "that", "the", "this", "those", "these");
$texts = array(
"tomato queen to that the this those these abracadabra tomato tomato",
"To be or not to be",
"That is the question",
"\"Queen Mary\" is the drink of vodka with tomato",
"The Pink Floyd's 'The More' album",
);
$hilite_texts = search_hilite($texts, $words);
echo '';
foreach ($hilite_texts as $text) {
echo "
Sunday, 5 April 2009
Highlight of selected words in html texts
Ярлыки:
feel-sorry-for-throw-out,
php
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment