sql >> Databáze >  >> RDS >> Mysql

jak zvýraznit výsledky vyhledávání

Neměli byste si to příliš ztěžovat. Vše, co potřebujete, abyste nahradili každý výskyt slova slovem zabaleným v rozsahu s použitým požadovaným stylem. Toto by vám mělo fungovat:

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>';
}

Použití regulárních výrazů k nahrazení obsahu by šlo také, i když pomocí str_replace() je o něco rychlejší.

Funkce přijímá tyto argumenty:

highlight_word( string, string, string );

highlight_words( string, array, array );

Výsledkem výše uvedeného příkladu je:



  1. java.security.AccessControlException:přístup odepřen (java.security.SecurityPermission authProvider.SunMSCAPI)

  2. Operátor SQL Méně než () pro začátečníky

  3. Jedinečná omezení a vložení nebo aktualizace pro MySQL i SQLite

  4. Daný klíč nebyl přítomen ve slovníku vb.net