Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

cara menyorot hasil pencarian

Anda seharusnya tidak membuatnya terlalu sulit untuk diri sendiri. Yang Anda butuhkan untuk mengganti setiap kemunculan kata dengan kata yang dibungkus dalam rentang dengan gaya yang diperlukan diterapkan. Ini akan bekerja untuk Anda:

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

Menggunakan Ekspresi Reguler untuk mengganti konten juga akan berhasil, meskipun menggunakan str_replace() sedikit lebih cepat.

Fungsi menerima argumen ini:

highlight_word( string, string, string );

highlight_words( string, array, array );

Contoh di atas menghasilkan:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa arti dari <> dalam kueri mysql?

  2. Memindahkan dan Mencadangkan Database MySQL Besar

  3. MySQL pilih berbeda tidak berfungsi

  4. Cara mendapatkan jumlah baris tertentu dari tabel yang berbeda di subquery

  5. Implementasi jarak Levenshtein untuk pencarian mysql/fuzzy?