sql >> Database >  >> RDS >> Mysql

hoe zoekresultaten te markeren

Je moet het jezelf niet te moeilijk maken. Alles wat je nodig hebt om elk voorkomen van een woord te vervangen door het woord dat in de spanwijdte is gewikkeld met de vereiste stijl toegepast. Dit zou voor jou moeten werken:

function highlight_word( $content, $word, $color ) {
    $replace = '<span style="background-color: ' . $color . ';">' . $word . '</span>'; // create replacement
    $content = str_replace( $word, $replace, $content ); // replace content

    return $content; // return highlighted data
}

function highlight_words( $content, $words, $colors ) {
    $color_index = 0; // index of color (assuming it's an array)

    // loop through words
    foreach( $words as $word ) {
        $content = highlight_word( $content, $word, $colors[$color_index] ); // highlight word
        $color_index = ( $color_index + 1 ) % count( $colors ); // get next color index
    }

    return $content; // return highlighted data
}



// words to find
$words = array(
    'normal',
    'text'
);

// colors to use
$colors = array(
    '#88ccff',
    '#cc88ff'
);

// faking your results_text
$results_text = array(
    array(
        'ab'    => 'AB #1',
        'cd'    => 'Some normal text with normal words isn\'t abnormal at all'
    ), array(
        'ab'    => 'AB #2',
        'cd'    => 'This is another text containing very normal content'
    )
);

// loop through results (assuming $output1 is true)
foreach( $results_text as $result ) {
    $result['cd'] = highlight_words( $result['cd'], $words, $colors );

    echo '<fieldset><p>ab: ' . $result['ab'] . '<br />cd: ' . $result['cd'] . '</p></fieldset>';
}

Het gebruik van reguliere expressies om inhoud te vervangen zou net zo goed werken, hoewel het gebruik van str_replace() is een beetje sneller.

De functies accepteren deze argumenten:

highlight_word( string, string, string );

highlight_words( string, array, array );

Het bovenstaande voorbeeld resulteert in:



  1. Functionele afhankelijkheid vinden

  2. Onjuiste dubbele waarden geretourneerd van mysql naar java

  3. Oracle-toegang vanaf iOS

  4. Toegang tot TimeZoneInfo vanaf SQL 2005 Server