आपको इसे अपने लिए बहुत कठिन नहीं बनाना चाहिए। आपको किसी शब्द की प्रत्येक घटना को आवश्यक शैली के साथ स्पैन में लिपटे शब्द के साथ बदलने की आवश्यकता है। यह आपके लिए काम करना चाहिए:
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>';
}
सामग्री को बदलने के लिए रेगुलर एक्सप्रेशन का उपयोग करना भी अच्छा होगा, हालांकि str_replace()
. का उपयोग करना थोड़ा तेज है।
फ़ंक्शन इन तर्कों को स्वीकार करते हैं:
highlight_word( string, string, string );
highlight_words( string, array, array );
उपरोक्त उदाहरण का परिणाम है: